c++ 语言链表头插法
时间: 2023-10-09 09:13:12 浏览: 103
头插法单链表
链表的头插法是指将新的节点插入到链表的头部,使其成为新的头节点。C++语言实现链表头插法的代码如下:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* insertAtHead(ListNode* head, int val) {
ListNode* newNode = new ListNode(val);
newNode->next = head;
return newNode;
}
void printList(ListNode* head) {
ListNode* curr = head;
while (curr) {
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
}
int main() {
ListNode* head = NULL;
// 插入元素
head = insertAtHead(head, 3);
head = insertAtHead(head, 2);
head = insertAtHead(head, 1);
// 打印链表
printList(head);
return 0;
}
```
在上面的代码中,我们定义了一个链表节点结构体 `ListNode`,其中包含一个整型变量 `val` 和一个指向下一个节点的指针 `next`。我们还定义了两个函数,一个用于在链表头插入新的节点 `insertAtHead`,另一个用于打印链表的所有节点 `printList`。
在 `insertAtHead` 函数中,我们首先创建一个新的节点 `newNode`,并将它的值设置为 `val`。然后将新节点的 `next` 指向当前链表头节点 `head`,最后将新节点作为新的头节点返回。
在 `main` 函数中,我们先初始化头节点 `head` 为空指针。然后使用 `insertAtHead` 函数向链表中插入三个元素。最后使用 `printList` 函数打印链表中的所有元素。
链表头插法是链表常用的一种操作,它的时间复杂度为 $O(1)$,非常高效。
阅读全文