C++单向链表头插法
时间: 2023-07-10 22:13:47 浏览: 119
用C++实现单向链表
4星 · 用户满意度95%
下面是C++实现单向链表的头插法:
```c++
#include <iostream>
using namespace std;
// 定义链表节点
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
// 头插法建立链表
ListNode* createList() {
ListNode *head = NULL;
int val;
while (cin >> val && val != -1) {
ListNode *node = new ListNode(val);
node->next = head;
head = node;
}
return head;
}
// 打印链表
void printList(ListNode *head) {
while (head) {
cout << head->val << "->";
head = head->next;
}
cout << "NULL" << endl;
}
int main() {
ListNode *head = createList();
printList(head);
return 0;
}
```
在这个例子中,我们使用了头插法来构建链表。当我们输入一个值时,我们会创建一个新的节点,并将其插入到链表头部。由于链表是通过指针连接的,我们只需要将新节点的 `next` 指向当前的链表头,再将链表头指向新节点即可。这样做的好处是,新节点可以直接插入到链表头部,时间复杂度为 O(1)。
最后,我们定义了一个函数 `printList()` 来打印链表中所有的节点。
阅读全文