双链表的定义
关于链表的基本知识我就不多说了,可以看看这篇文章:【C++】单链表(有指针)。讲的很详细
双链表也叫双向链表,是链表的一种,它的每个 结点(node) 中都有两个指针,分别是 后继(next) 和 前驱(pre) 。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点(这就是双链表的优势)。但双链表是“以空间换时间”。(来自:百度百科)
如图:
双链表的基本操作
同单链表一样,双链表的操作也有创建,插入,删除 三种基本操作。
创建双链表
和单链表差不多,只是多了一个pre前驱结点
struct node{
//双链表结构体
int data;//数据域
node *pre;//前驱指针
node *next;//后继指针
}*head;//head是头指针(不知道的往上翻)
建立:
head=new node;
p=new node;
head->pre=NULL;
head->next=p;
p->pre=head;
p->next=NULL;
//以上就形成了一个双链表;
//其中,head的pre域为空,next域指向p;
//p的pre域指向head,next域为空
//head和p的data域都没赋值,它们的默认值是……我也不知道,反正不是0
形成的双链表如图:
这里的data没赋值,应该是一个很大的随机数
赋值
for(int i=1;i<=10;i++)
{
q=new node;
q->data=i*100;
q->next=q->pre=NULL;
p->next=q;
p=q;//迭代
}
输出
void Print()
{
p&