一 什么是双链表
1 双链表就是比单链表多了一个前驱节点
如图
目录
二 双链表的初始化以及创建操作
2.1 双链表的定义
typedef int ElemType;
typedef struct DNode
{
ElemType data; // 数据域
struct DNode *prior,*next; // 前驱和后继
}DNode,*DLinklist;
2.2 双链表的头插法
void Init_List(DLinklist &L); // 创建双链表操作
void Init_List(DLinklist &L)
{
int len = 0; // 长度
DNode* Tail = L;printf("请输入链表的长度\n");
scanf("%d",&len);for(int i = 0; i < len; i++)
{
int val = 0; // 暂存节点的值
DNode* p1 = (DNode*)malloc(sizeof(DNode));
if(p1 == NULL)
{
printf("链表开辟失败\n");
exit(-1);
}
printf("第 %d 个节点的值为\n",i+1);
scanf("%d",&val);
// 头插操作
if(L->next == NULL)
{
p1->data = val; // 赋值操作
// 头插操作
p1->next = NULL;
p1->prior = L;
L->next = p1;
}
else
{
p1->data = val;
p1->next = L->next;
L->next->prior = p1;
p1->prior = L;
L->next = p1;
}}
}
2.3 头插法结果展示
2.4 双链表的尾插法
void Init_List(DLinklist &L)
{
int len = 0; // 长度
DNode* Tail = L;printf("请输入链表的长度\n");
scanf("%d",&len);for(int i = 0; i < len; i++)