오늘은 이중 연결 리스트에 대해 다시한번 기억을 되살렸다.

자료구조의 기본 중의 기본이지만 구현해 볼 때마다 책 없이 혼자하라고 하면

시간이 꽤 걸린다. 나만그런가;ㅋ

어쨌든 오늘 중요한 자료구조를 또 한번 코딩해본 것은 의미있는 일이다.

 으허허~


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4
      5 struct A
      6 {
      7         char name[20];
      8         int age;
      9         int salary;
     10         struct A *before;
     11         struct A *next;
     12 } *head, *tail;
     13
     14 void input(void);
     15 void output(void);
     16
     17 int main()
     18 {
     19         head = tail = NULL;
     20         input();
     21         output();
     22         return 0;
     23 }
     24
     25 void input (void )
     26 {
     27         struct A *ptr;
     28
     29         while(1)
     30         {
     31                 if((ptr = (struct A *)malloc(sizeof(struct A))) == NULL)
     32                 {
     33                         printf("Memory Allocation Error\n");
     34                         exit(1);
     35                 }
     36
     37                 printf("\n성명 ? ");
     38                 gets(ptr -> name);
     39                 if(!strcmp(ptr -> name, "end"))
     40                         break;
     41                 printf("나이 ? ");
     42                 scanf("%d", &ptr -> age);
     43                 printf("월급 ? ");
     44                 scanf("%d%*c", &ptr -> salary);
     45                 ptr -> before = NULL;
     46                 ptr -> next = NULL;
     47
     48                 if(head == NULL)
     49                         head = tail = ptr;
     50                 else
     51                 {
     52                         ptr -> before = tail;
     53                         tail -> next = ptr;
     54                         tail = ptr;
     55                 }
     56         }
     57         free(ptr);
     58 }
     59
     60 void output(void)
     61 {
     62         struct A *ptr;
     63
     64         printf("\nNode List head -> tail \n");
     65         ptr = head;
     66         while(ptr)
     67         {
     68                 printf("name : %s, age : %d, salary : %d\n", ptr -> name, ptr -> age, ptr -> salary);
     69                 ptr = ptr -> next;
     70         }
     71         printf("\nNode List tail -> head \n");
     72         ptr = tail;
     73         while(ptr)
     74         {
     75                 printf("name : %s, age : %d, salary : %d\n", ptr -> name, ptr -> age, ptr -> salary);
     76                 ptr = ptr -> before;
     77         }
     78 }
     79
     80

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요