C++中刪除連結串列的交替節點
在本教程中,我們將學習如何從單鏈表中刪除所有素數節點。
讓我們看看解決問題的步驟。
編寫包含資料和下一個指標的結構體。
編寫一個函式將節點插入到單鏈表中。
用虛擬資料初始化單鏈表。
迭代遍歷單鏈表。
透過維護前一個節點來刪除交替節點。
編寫一個刪除節點的函式。刪除節點時,請考慮以下三種情況。
如果節點是頭節點,則將頭節點移動到下一個節點。
如果節點是中間節點,則將下一個節點連結到前一個節點。
如果節點是尾節點,則刪除前一個節點的連結。讓我們看看程式碼。
示例
#include <bits/stdc++.h> using namespace std; struct Node { int data; Node *next; }; void deleteAlternateNodes(Node *head) { if (head == NULL) return; Node *prev = head; Node *node = head->next; while (prev != NULL && node != NULL) { prev->next = node->next; free(node); prev = prev->next; if (prev != NULL) { node = prev->next; } } } void insertNode(Node** head_ref, int new_data) { Node* new_node = new Node(); new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } void printLinkedList(Node *node) { while (node != NULL) { cout << node->data << " -> "; node = node->next; } } int main() { Node* head = NULL; insertNode(&head, 1); insertNode(&head, 2); insertNode(&head, 3); insertNode(&head, 4); insertNode(&head, 5); insertNode(&head, 6); cout << "Linked List before deletion:" << endl; printLinkedList(head); deleteAlternateNodes(head); cout << "\nLinked List after deletion:" << endl; printLinkedList(head); return 0; }
輸出
如果您執行上述程式,您將得到以下結果。
Linked List before deletion: 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> Linked List after deletion: 6 -> 4 -> 2 ->
結論
如果您在本教程中有任何疑問,請在評論區提出。
廣告