'linkedlist'에 해당되는 글 1건
- 2007.05.11 간단한 양방향 linkedlist 6
간단한 양방향 linkedlist
Programming/C 2007. 5. 11. 19:58
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 }
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분 더 알아보기 쉽게 수정--
'Programming > C' 카테고리의 다른 글
리눅스에서 2기가 이상인 파일에 접근하기 (4) | 2007.06.28 |
---|---|
Mpd 싱크 가사....... 프로그램 (8) | 2007.05.25 |
세그멘테이션 폴트를 줄이자! valgrind (4) | 2007.05.08 |
c언어로 구현한 mp3 태그(id3v2) 지우기 (6) | 2007.05.06 |
pointer 를 call by referance 하기 (6) | 2007.04.09 |