코드에서 세그먼트 오류가 계속 발생하지만 이유를 알 수 없습니다. int n
은 내가 삭제할 노드입니다. 따라서 listDeleteNth(new, 2)
은 시퀀스에서 3을 삭제합니다.링크 된 목록에서 특정 노드 삭제 C 프로그래밍
1-> 2-> 3-> 4
1-> 2-> 4
typedef struct _node *Node;
typedef struct _list *List;
typedef struct _list {
Node head;
} list;
typedef struct _node {
int value;
Node next;
} node;
void listDeleteNth (List l, int n) {
Node current = l->head;
int i = 0;
while (i < n-1) {
current = current->next; //node before deleted node.
}
Node temp = current->next; //make temp the one to be deleted.
if (current->next->next == NULL) {
printf("you deleted the last node!\n"); //check if dlting lastnode
} else {
current->next = current->next->next; //connect prev to after
}
}
읽기 https://ericlippert.com/2014/03/05/how-to-debug 다음에
을 -small-programs/ –
목록에 노드가 하나만 있다고 가정합니다. 그렇다면 이것은 실패 할 것입니다 (힌트 :'current-> next-> next'는'current-> next'가'NULL' 일 때 어떻게 작동 할 수 있습니까?) –
당신은 코드에 몇가지 이슈가 있습니다.'i' 파라미터는 필요합니다 증가하는 경우 다음 네 가지 시나리오에 대해 생각해 볼 필요가 있습니다. 빈 목록, 1 노드 목록, 삭제할 노드가 마지막 노드, 삭제할 노드가 처음이 아니라 마지막 노드가됩니다 –