链表的头插法和尾插法的示意图和代码
时间: 2023-08-29 22:07:12 浏览: 169
头插法、尾插法、链表长度test-c-master.zip
链表的头插法和尾插法是两种常见的链表插入操作。
头插法:新节点插入到链表的头部,成为新的头节点。
示意图:
```
插入前: 插入后:
head new_node
| |
V V
node1 node1
| |
V V
node2 node2
| |
V V
node3 node3
```
代码实现:
```c++
// 头插法
void insert_head(ListNode *&head, int val) {
ListNode *new_node = new ListNode(val);
new_node->next = head;
head = new_node;
}
```
尾插法:新节点插入到链表的尾部,成为新的尾节点。
示意图:
```
插入前: 插入后:
head head
| |
V V
node1 node1
| |
V V
node2 node2
| |
V V
node3 new_node
|
V
node3
```
代码实现:
```c++
// 尾插法
void insert_tail(ListNode *&head, int val) {
ListNode *new_node = new ListNode(val);
if (head == nullptr) {
head = new_node;
} else {
ListNode *p = head;
while (p->next != nullptr) {
p = p->next;
}
p->next = new_node;
}
}
```
其中,`ListNode` 是链表节点的定义,包含一个 `val` 域和一个 `next` 指针,指向下一个节点。
阅读全文