친구 과제 해주면서 만들었답니다.
그냥 LinkedList에 대해 아주 기초적인 깔끔한 소스에요.
더블포인터의 쓰임새를 다시 한번 상기 시켜준답니다.
다운로드 :
LinkedList_DoublePointer.zip
01.
#include <stdio.h>
02.
#include <stdlib.h>
03.
04.
typedef
struct
_LinkedList
05.
{
06.
int
data;
07.
_LinkedList* next;
08.
}LinkedList;
09.
10.
_LinkedListHeader
11.
12.
LinkedList* next;
13.
}LinkedListHeader;
14.
15.
void
putData(LinkedListHeader* header,
data)
16.
17.
LinkedList* tmp;
18.
19.
tmp=(LinkedList*)
malloc
(
sizeof
(LinkedList));
20.
tmp->data=data;
21.
tmp->next=header->next;
22.
header->next=tmp;
23.
return
;
24.
}
25.
deleteData(LinkedListHeader* header,
26.
27.
LinkedList **tmp, *tmp2;
28.
i;
29.
30.
tmp=&(header->next);
31.
if
(*tmp==NULL)
32.
33.
34.
while
((*tmp)!=NULL)
35.
36.
((*tmp)->data==data)
37.
38.
tmp2=(*tmp);
39.
*tmp=(*tmp)->next;
40.
free
(tmp2);
41.
42.
else
43.
tmp=&((*tmp)->next);
44.
45.
46.
47.
48.
49.
50.
printData(LinkedListHeader* header)
51.
52.
LinkedList *tmp;
53.
index=0;
54.
55.
tmp=header->next;
56.
(tmp!=NULL)
57.
58.
printf
"%d node value %d\n"
, index, tmp->data);
59.
index++;
60.
tmp=tmp->next;
61.
62.
63.
64.
65.
66.
main(
)
67.
68.
char
command;
69.
70.
LinkedListHeader header;
71.
header.next=NULL;
72.
73.
(1)
74.
75.
fflush
(stdin);
76.
"put value or delete value : "
);
77.
scanf
"%c%d"
, &command, &data);
78.
(command==
'p'
79.
putData(&header,data);
80.
'd'
81.
deleteData(&header,data);
82.
printData(&header);
83.
84.
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.