【C++】双链表(有指针)

本文介绍了C++中双链表的概念及其优势,包括每个节点的后继和前驱指针。文章详细讲解了如何创建、插入和删除双链表节点,并提供了相应的代码示例。通过实例展示了节点的插入过程和删除操作,帮助读者理解双链表的基本操作。
摘要由CSDN通过智能技术生成

双链表的定义

关于链表的基本知识我就不多说了,可以看看这篇文章:【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&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值