C/C++ 언어 malloc()을 포함한 사용자 정의 함수 galloc()을 이용하여 링크드 리스트를 생성하는 프로그램


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
/* malloc()을 포함한 사용자 정의 함수 galloc()을 이용하여
** 링크드 리스트를 생성하는 프로그램*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct list {
 char name[20];
 char sex;
 struct list *next;
};
 
typedef struct list LIST;
LIST *head;
LIST *galloc(void);
 
 
void readAndMakeLinkedList(void);
void printLinkedList(void);
 
void main(void) {
   readAndMakeLinkedList();
   printLinkedList();
}
 
void readAndMakeLinkedList(void)
/* 입력 데이터를 읽고 이를 링크트 리스트로 연결하는 함수 */
   LIST *ptr1, *ptr2 ;
   head = galloc();
   printf("입력 데이터의 이름과 성별(M or F)을 차례로 입력\n");
   printf("입력을 끝내시려면 ##을 입력하세요.\n");
   scanf("%s %c", head->name, &head->sex);
   ptr1 = head;
   while (1) {
     ptr2 = galloc();
     fflush(stdin);
     scanf("%s", ptr2->name);
     if (strcmp(ptr2->name, "##"==0break;
     else scanf(" %c", &ptr2->sex);
     ptr1->next = ptr2;
     ptr1 = ptr2;
   }
   ptr1->next = NULL;
 }
 
 void printLinkedList() {
   /* 링크트 리스트를 따라가면서 출력하는 함수 */
   LIST *ptr;
   ptr = head;
   printf ("Head -> ");
   while ( ptr->next != NULL ) {
      printf("%s %c -> ", ptr->name, ptr->sex);
      ptr = ptr->next;
   }
   printf("%s %c -> ", ptr->name, ptr->sex);
   printf("NULL\n");
 }
 
LIST *galloc(void) {
  return((LIST *malloc(sizeof(LIST)));
}
 
cs


C/C++ 언어 malloc()을 포함한 사용자 정의 함수 galloc()을 이용하여 링크드 리스트를 생성하는 프로그램



+ Recent posts