0
實現在現有節點(key = oldkey)之後插入新節點(key = newKey)的函數。如果在節點中找不到newKey,則不執行任何操作。錯誤調試鏈接列表函數上的分段錯誤
這是我的節點構造:
struct Node {
int key;
Node* next;
};
這是我的方法:
void insert_after(Node* head, int oldKey, int newKey){
Node* currNode = NULL;
Node* nextNode = NULL;
Node* newNode = NULL;
if (head == NULL) {
return;
}
currNode = head;
newNode->key = newKey;
while (currNode != NULL) {
if (currNode->key == oldKey) {
// oldKey is anywhere but last node
if (currNode->next != NULL) {
nextNode = currNode->next;
newNode->next = nextNode;
currNode->next = newNode;
break;
}
// oldKey is at the last node
else {
currNode->next = newNode;
newNode->next = NULL;
break;
}
}
currNode = currNode->next;
}
}
提前感謝!
可以簡化爲:Node * newNode = NULL; newNode-> key = newKey;' – melpomene
建議:如果你不插入節點,警告呼叫者。當他們晚些時候去尋找並找不到時,他們會很生氣。即使這是他們的錯,他們也找不到它。人很奇怪。 – user4581301
2nd'break'語句在'else'裏面,還是在'if'裏面呢? –