C++双向链表尾插法
时间: 2023-07-10 07:13:56 浏览: 128
C++双向链表尾插法的代码如下所示:
```c++
#include<iostream>
using namespace std;
//定义双向链表结构体
struct ListNode{
int val;
ListNode* prev;
ListNode* next;
ListNode(int x):val(x),prev(NULL),next(NULL){};
};
void addToTail(ListNode** pHead,int val){
ListNode* pNew = new ListNode(val);
if(*pHead == NULL){
*pHead = pNew;
}
else{
ListNode* pNode = *pHead;
while(pNode->next != NULL){
pNode = pNode->next;
}
pNode->next = pNew;
pNew->prev = pNode;
}
}
int main(){
ListNode* head = NULL;
addToTail(&head, 1);
addToTail(&head, 2);
addToTail(&head, 3);
addToTail(&head, 4);
ListNode* pNode = head;
while(pNode != NULL){
cout<<pNode->val<<" ";
pNode = pNode->next;
}
return 0;
}
```
在双向链表中,每个节点都有一个前驱节点和一个后继节点。在尾插法中,我们需要先创建一个新的节点,然后找到链表的最后一个节点,将它的后继节点指向新节点,新节点的前驱节点指向原来的最后一个节点。如果链表为空,则将新节点设为头节点。
阅读全文