双链表插入节点代码
时间: 2024-09-30 17:01:12 浏览: 10
双链表是一种数据结构,它包含两个指针,分别称为头节点的前驱和后继。在双链表中插入节点通常涉及以下几个步骤:
1. 创建新节点:首先创建一个新的节点,它将存储你要插入的数据,并设置它的`prev`(前驱)指向当前的最后一个节点,因为新节点将成为新添加元素的前一个节点。
```c++
struct Node {
int data;
Node* prev;
Node* next;
};
Node* newNode(int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->prev = nullptr; // 如果是第一个节点,prev为NULL
newNode->next = nullptr; // 初始化下一个节点为空
return newNode;
}
```
2. 插入到特定位置:如果你知道要插入的位置(比如索引),则需要找到插入点,然后更新节点的指针。
```c++
void insertNode(Node** head, int index, int value) {
if (index <= 0) { // 插入到头部
newNode->next = *head;
(*head)->prev = newNode;
*head = newNode;
} else {
Node* current = *head;
for (int i = 0; i < index - 1 && current != nullptr; ++i) {
current = current->next;
}
if (current != nullptr) {
newNode->prev = current;
newNode->next = current->next;
current->next->prev = newNode;
current->next = newNode;
} else {
cout << "Invalid index!" << endl;
}
}
}
```
在这个例子中,假设`*head`是指向头节点的指针。如果`index`超出范围,则会提示错误。注意这个代码没有处理空链表的情况,你需要在实际应用中加上相应的检查。