Skip to content

Repository files navigation

📚 자료구조 과제 - 연결 리스트 정렬 프로그램 구현하기

이름: 정명훈
과목: 자료구조
주제: 연결 리스트를 이용한 학생 데이터 정렬


📌 과제 개요

이 프로그램은 연결 리스트(Linked List)를 사용하여 학생 정보를 저장하고,
총점, 학번, 이름 기준으로 정렬하여 출력하는 기능을 수행합니다.
학생 데이터는 외부 파일(data.txt)로부터 입력받습니다.


🧾 데이터 형식 (data.txt)

  • 형식: 학번 이름 총점

🧱 구조체 정의

typedef struct student {
    int number;       // 학번
    char name[10];    // 이름
    float total;      // 총점
} stu;

typedef struct NODE {
    stu data;
    struct NODE* link;
} node;

## 🔧 주요 기능

### 📁 파일 처리
- `data.txt` 파일에서 학생 정보를 읽어옴
- 파일의 끝을 정확히 처리하기 위한 `feof()` 사용
- `fopen()` 실패  예외 처리

### 🔗 연결 리스트 구성
- 구조체를 기반으로  연결 리스트(Linked List) 생성
- 입력받은 학생 정보를 노드로 변환  리스트에 삽입

### 🔄 정렬 기능
- `total_change()`  
  → **총점 기준 오름차순 정렬**
- `number_change()`  
  → **학번 기준 오름차순 정렬**
- `name_change()`  
  → **이름 기준 오름차순 정렬**

### 🖨️ 출력 기능
- 정렬된 결과를 학번, 이름, 총점 형식으로 출력

### 🧠 학습  구현 포인트
- 연결 리스트 구현  노드 삽입 로직 설계
- 구조체 기반 정렬 알고리즘 직접 구현
- 파일 입출력 처리: `fopen`, `fscanf`, `feof`
- 메모리 동적 할당  해제: `malloc`, `free`
- 예외 상황에 대한 처리:
  - 파일 열기 실패  오류 출력
  - 동적 메모리 해제를 통한 메모리 누수 방지

About

C언어 자료구조 동적할당 연결리스트 학생 구조체 과제

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages