본문 바로가기

프로그래밍 언어들/C

20141124_단일 연결리스트(singly linked list)_노드 삭제 함수(delNode)

이번에는 단일 연결리스트(singly linked list)의 노드 삭제 함수(delNode)입니다.


노드 추가 및 기본적인 소스는 다른 글에 있으니 참고 하시기 바랍니다. ^^




void delNode(NODE **head)

{

NODE *pri = *head;

NODE *temp = pri->next;


// 현재 노드가 없을 경우

if(pri == NULL)

return;


// 현재 노드가 한 개일 경우

if(pri->next == NULL)

{

*head = NULL;

free(pri);

}

else // 노드가 2개 이상일 경우

{

while(temp->next != NULL)

{

pri = temp;

temp = temp->next;

}

pri->next = NULL;

free(temp);

}

}



int main(void){

// 리스트의 가장 처음 노드를 가르키는 포인터

NODE *head = NULL;


// 맨 뒤에 데이터 '10'을 가진 노드를 추가

addNode(&head, 10);


// 맨 뒤에 데이터 '20'을 가진 노드를 추가

addNode(&head, 20);


// 맨 뒤에 데이터 '30'을 가진 노드를 추가

addNode(&head, 30);


// 맨 뒤의 노드를 삭제

delNode(&head);


// 맨 뒤의 노드를 삭제

delNode(&head);


// 맨 뒤의 노드를 삭제

delNode(&head);


// 맨 뒤에 데이터 '30'을 가진 노드를 추가

addNode(&head, 20);


// 맨 뒤에 데이터 '30'을 가진 노드를 추가

addNode(&head, 50);


return 0;

}