연결리스트 이해가;;
헛매질
질문 제목 : 연결리스트 이해가;;
이해가 안가요질문 내용 :
#include turboc.h
typedef struct node
{
int data;
struct node* next;
}node;
node* head;
void lnitlist(void)
{
head=(node*)malloc(sizeof(node));
head-next=null;
}
node* insertnode(node* target, node *anode)
{
node *new;
new=(node*)malloc(sizeof(node));
*new=*anode;
new-next=target-next;
target-next=new;
return new;
}
bool deletenode(node* target)
{
node *del;
del=target-next;
if(del==null){
return false;
}
target-next=del-next;
free(del);
return true;
}
void unlnitlist()
{
while(deletenode(head)) {;}
free(head);
head=null;
}
int main(void)
{
int i;
node *now, temp;
lnitlist();
//노드삽입
now=head;
for(i=1; i=5; i++){
temp.data=i;
now=insertnode(now, &temp);
}
//두번째 노드 삭제
deletenode(head-next);
//노드 출력
for(now=head-next; now; now=now-next){
printf(%d\t, now-data);
}
printf(\n);
unlnitlist();
system(pause);
return 0;
}
노드 삽입부분에서 now에 노드를 5번 넘겨주는데
노드 출력부분에서 now를 head-next로 초기화 시켜주잖아요
그런데 head-next는 null로 초기화 되었으니까 now가 가지고 있는것도 null 아닌가요??
-
Addicted
insert 하는 함수에서 head-next가 처음 삽입되는 노드(first 라 칭함)를 가르키고, 다음 삽입되는 second를 first-next가 가르키는 전형적인 연결리스트 입니다.
그러므로 초기화는 NULL로 했지만 삽입될때 NULL이 아니라 다음 노드를 가르키는 포인터가 되겠죠.