반응형

지금까지 학습한 것을 토대로 하여 영화에 대한 정보를 연결 리스트로 저장하고 출력하는 프로그램을 작성하여 보자.


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
반응형

전화 번호부를 연결 리스트를 이용하여 만들어보자. 사용자가 전화 번호를 입력하면 연결리스트의 끝에 추가한다. 탐색 기능도 추가하라.


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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 30
typedef struct NODE {
    char name[SIZE];
    char num[SIZE];
    struct NODE *link;
}NODE;
int menu();
void initialize(NODE **list, NODE **next);
void add(NODE **list, NODE **prev);
void search(NODE **next, NODE **list);
void exit1(NODE **next, NODE **list);
int main(void)
{
    NODE *list = NULL;
    NODE *prev, *next;
    int men = 0;
    prev = NULL; next = NULL;
    while ((men = menu()) != 4)
    {
        getchar();
        if (men == 1)
        {
            initialize(&list, &next);
        }
        else if (men == 2)
        {
            add(&list, &prev);
        }
        else if (men == 3)
        {
            search(&next, &list);
        }
    }
    exit1(&next, &list);
    return 0;
}
int menu()
{
    int a = 0;
    printf("연결 리스트를 이용한 전화 번호부 메뉴\n");
    printf("-------------------------\n");
    printf("1. 초기화\n");
    printf("2. 전화 번호 추가\n");
    printf("3. 전화 번호 탐색\n");
    printf("4. 종료\n");
    printf("-------------------------\n");
    scanf("%d"&a);
    return a;
}
void initialize(NODE **list, NODE **next)
{
    NODE *p;
    p = *list;
    while (p != NULL)
    {
        *next = p->link;
        free(p);
        p = *next;
    }
    printf("초기화가 완료되었습니다.\n");
}
void add(NODE **list, NODE **prev)
{
    NODE *p;
    p = (NODE*)malloc(sizeof(NODE));
    printf("이름: ");
    gets(p->name);
    printf("번호: ");
    gets(p->num);
    if (*list == NULL)
    {
        *list = p;
    }
    else
    {
        (*prev)->link = p;
    }
    p->link = NULL;
    *prev = p;
}
void search(NODE **next, NODE **list)
{
    NODE *p;
    char nam[SIZE];
    printf("찾을 이름: ");
    gets(nam);
    p = *list;
    while (p != NULL)
    {
        *next = p->link;
        if (strcmp(p->name, nam) == 0)
        {
            printf("전화 번호는 %s입니다.\n", p->num);
            break;
        }
        p = *next;
    }
}
void exit1(NODE **next, NODE **list)
{
    NODE *p;
    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

+ Recent posts