使用 C++ 删除链表的第一个节点
给定一个链表,我们需要移除它的第一个元素,并返回指向新链表头部的指针。
Input : 1 -> 2 -> 3 -> 4 -> 5 -> NULL Output : 2 -> 3 -> 4 -> 5 -> NULL Input : 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL Output : 4 -> 6 -> 8 -> 33 -> 67 -> NULL
在给定的问题中,我们需要删除列表的第一个节点并将我们的头部移动到第二个元素并返回头部。
寻找解决方案的方法
在这个问题中,我们可以将头部移动到下一个位置,然后释放上一个节点。
示例
#include <iostream> using namespace std; /* Link list node */ struct Node { int data; struct Node* next; }; void push(struct Node** head_ref, int new_data) { //将数据推入列表 struct Node* new_node = new Node; new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } int main() { Node* head = NULL; push(&head, 12); push(&head, 29); push(&head, 11); push(&head, 23); push(&head, 8); auto temp = head; //温度变成头 head = head -> next; //我们的头成为下一个元素 delete temp; //我们删除temp即第一个元素 for (temp = head; temp != NULL; temp = temp->next) //打印列表 cout << temp->data << " "; return 0; }输出结果
23 11 29 12
上面代码的解释
我们只需要在这个程序中将头部移动到它的下一个元素,然后删除前一个元素,然后打印新列表。给定程序的整体时间复杂度为O(1),这意味着我们的程序不依赖于给定的输入,这是我们可以达到的最佳复杂度。
结论
在本文中,我们解决了移除链表第一个节点的问题。我们还学习了这个问题的C++程序和我们解决的完整方法。我们可以用其他语言编写相同的程序,例如C、java、python和其他语言。我们希望这篇文章对您有所帮助。