단일 원형 연결리스트 공부하다가 짠 소스입니다. 조언부탁드려요!
글쓴이: 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 해서 출력한거임.ㅎㅎ
댓글 달기