c++在链表的第i个结点前插入结点代码
时间: 2023-12-03 22:43:29 浏览: 116
链表的操作之插入结点保持有序-简单链表及其应用
假设我们有以下链表结构:
```
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
我们可以使用以下代码在第i个节点之前插入新节点:
```
ListNode* insertNode(ListNode* head, int i, int val) {
if (i == 0) { // 在头部插入
ListNode* newNode = new ListNode(val);
newNode->next = head;
return newNode;
}
ListNode* cur = head;
while (i > 1 && cur) { // 找到第i-1个结点
cur = cur->next;
i--;
}
if (!cur) { // i超出链表长度,直接返回head
return head;
}
ListNode* newNode = new ListNode(val);
newNode->next = cur->next; // 插入新结点
cur->next = newNode;
return head;
}
```
需要注意的是,在插入新节点时,要先将新节点的next指针指向第i个节点的next指针所指向的节点,再将第i个节点的next指针指向新节点。
阅读全文