간단한 양방향 linkedlist

 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 struct node
 5 {
 6     struct node *backward;
 7     int data;
 8     struct node *forward;
 9 };
10
11 struct node* create_node(int i)
12 {
13     struct node *new_node          = NULL;
14     static struct node *old_node   = NULL;
15
16     new_node = (struct node *)malloc(sizeof(struct node) * 1);
17
18     new_node -> backward     = old_node;
19     new_node -> data            = i;
20     new_node -> forward        = NULL;
21
22     /* 첫번째 노드가 아니라면 전노드가 있는 곳의 주소를 준다 */
23     if(old_node != NULL)
24         old_node -> forward = new_node;
25
26     old_node = new_node;
27
28     return new_node;
29 }
30
31 /*me_free <= Header*/
32 void free_node(struct node *me_free)
33 {
34     while(me_free -> forward != NULL){
35         me_free = me_free -> forward;
36         free(me_free -> backward);
37     }
38
39     free(me_free);
40 }
41
42 int main(void)
43 {
44     struct node *head  = NULL;
45
46     head = create_node(1);
47     create_node(2);
48     create_node(3);
49     create_node(4);
50
51     printf("node 1 : %d\n",head -> data);
52     printf("node 2 : %d\n",head -> forward -> data);
53     printf("node 3 : %d\n",head -> forward -> forward -> data);
54     printf("node 4 : %d\n",head -> forward -> forward -> forward -> data);
55     printf("moving : %d\n",head -> forward -> backward -> data);
56
57     free_node(head);
58
59     return 0;
60 }

간단한 linkedlist 당장 쓸때가 있어서

"아무것도 안보고 스스로 처음" 으로 만들어 봣다...

1년반전만해도 linkedlist짜는데 못짜가지고 막 배껴가갔던게 생각이 나네 ㅋㅋ

뭐 암튼간데  잘 작동하는듯하는데.. 글쎄 확실힌 모르겠다..

뭐낙 실수가 많아서..

일단 memory-leak은 안생기는거 같지만....

뭐누군가가 구글링을 하거나 해서 학교 숙제 도움이나 될까..

뭐 틀리다고 해도 내책임은 없다,.. =3 (이블로그에있는 모든 자료가 마찬가지!)

--07-5-12-1시 30분 더 알아보기 쉽게 수정--