이번에는 단일 연결리스트(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;
}
'프로그래밍 언어들 > C' 카테고리의 다른 글
두 개의 쓰레드를 활용한 병합정렬(merge sorting) (0) | 2015.01.22 |
---|---|
단일 쓰레드 병합 정렬(Merge sorting) (0) | 2015.01.22 |
20141127_C언어 하트 피하기 게임 (0) | 2014.11.27 |
20141123_C언어 오목게임 (3) | 2014.11.23 |
20141123_단일 연결리스트(singly linked list)_노드 추가 함수(addNode) (0) | 2014.11.23 |