단일 원형 연결리스트 공부하다가 짠 소스입니다. 조언부탁드려요!
글쓴이: musalhk / 작성시간: 토, 2009/07/04 - 3:40오전
#include <stdio.h> #include <malloc.h> #include <string.h> #define NAME_SIZE 30 struct list_node { // 학생 성적 함수 char name[NAME_SIZE]; float a; float b; float c; float d; float e; float f; float g; float avg; struct list_node *link; }; typedef struct list_node list; int key = 0; // 메뉴 입력 변수 list *head = NULL, *tail = NULL; // 첫번째 노드( head ), 원형 노드( tail ) void init() { // 초기 메뉴 함수 fputs( "------------=------------\n", stdout ); fputs( "학생 평점 관리 프로그램\n", stdout ); fputs( "-------------------------\n", stdout ); fputs( "1. 학생 추가\n2. 학생 삭제\n3. 학생별 성적 출력\n4. 종료\n", stdout ); scanf( "%d", &key ); fputs( "\n", stdout ); } void add() { // 학생 노드 생성 함수 list *ptr = NULL; ptr = ( list * )malloc( sizeof( list ) ); fputs( "추가할 학생 이름, 과목 학점( 7과목 ) 입력\n:", stdout ); scanf( "%s", ptr->name ); scanf( "%f", &ptr->a ); scanf( "%f", &ptr->b ); scanf( "%f", &ptr->c ); scanf( "%f", &ptr->d ); scanf( "%f", &ptr->e ); scanf( "%f", &ptr->f ); scanf( "%f", &ptr->g ); ptr->link = NULL; if( head == NULL ) { head = ptr; tail = head; } else { ptr->link = head->link; head->link = ptr; tail = head; } } void del(list *ptr) { // 학생 노드 삭제 함수 list *temp = NULL; if( head->link == NULL ) { head = NULL; free(head); } else { temp = ptr->link; head->link = temp; free(ptr); } } void listprint() { // 학생 성적 출력 함수 if( head == NULL ) { fputs( "학생 정보가 없습니다.\n", stdout ); exit(1); } while( head != NULL ) { printf( "\n이 름 : %s\n", head->name ); printf( "과목1 : %1.1f\n", head->a ); printf( "과목2 : %1.1f\n", head->b ); printf( "과목3 : %1.1f\n", head->c ); printf( "과목4 : %1.1f\n", head->d ); printf( "과목5 : %1.1f\n", head->e ); printf( "과목6 : %1.1f\n", head->f ); printf( "과목7 : %1.1f\n", head->g ); printf( "평 점 : %1.3f\n", ( head->a + head->b + head->c + head->d + head->e + head->f + head->g ) / 7 ); if( head->link == NULL ) { break; } else { head = head->link; } } head = tail; } int main() { while( key != 4 ) { init(); if( key == 1 ) { add(); } if( key == 3 ) { listprint(); } if( key == 2 ) { del(head->link); } } return 0; }
단일 원형 연결리스트로 학점 계산하는 프로그램입니다..
공부할려고 한건데 제대로 짠건지 모르겠습니다..
조언 부탁드립니다!!
Forums:
ㅜㅜ
펴엄 구하는 줄이 길어서 짤렸네요;;; 그냥 다 더해서 / 7 해서 출력한거임.ㅎㅎ
댓글 달기