지금까지 학습한 것을 토대로 하여 영화에 대한 정보를 연결 리스트로 저장하고 출력하는 프로그램을 작성하여 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 40 typedef struct NODE{ char name[SIZE]; int year; struct NODE *link; }NODE; int menu(); void add(NODE **list, NODE **prev); void printing(NODE **list); void exit1(NODE **list,NODE **next); int main(void) { int cho=0; NODE *list=NULL; NODE *p,*next,*prev; while((cho=menu())!=3){ getchar(); if(cho==1) { add(&list,&prev); } else if(cho==2) { printing(&list); } else if(cho==3) { exit1(&list,&next); break; } } return 0; } int menu() { int men=0; printf("----------------------\n"); printf("1. 영화 정보 추가\n"); printf("2. 영화 정보 출력\n"); printf("3. 종료\n"); printf("----------------------\n"); printf("번호를 선택하세요: "); scanf("%d",&men); return men; } void add(NODE **list, NODE **prev) { NODE *p=NULL; p=(NODE*)malloc(sizeof(NODE)); printf("영화의 제목을 입력하세요: "); gets(p->name); printf("영화의 개봉 연도를 입력하세요: "); scanf("%d",&(p->year)); if(*list==NULL) {*list=p;} else {(*prev)->link=p;} p->link=NULL; *prev=p; } void printing(NODE **list) { NODE *p=NULL; p=*list; while(p!=NULL) { printf("제목: %s\n",p->name); printf("년도: %d\n",p->year); p=p->link; } } void exit1(NODE **list,NODE **next) { NODE *p=NULL; p=*list; while(p!=NULL) { *next=p->link; free(p); p=*next; } } | cs |
'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글
전화 번호부 작성 (2) | 2017.02.25 |
---|---|
양의 정수 저장 (0) | 2017.02.22 |
단어 입력 받기 (0) | 2017.02.21 |
주소록 저장 (0) | 2017.02.21 |
문자열 동적 메모리 (0) | 2017.02.21 |