【数据结构·C语言版】双向链表

回顾单链表的构造过程,是将一个或者多个结点通过指针链接起来,构成一条链状的结构,它可以很好的表示逻辑上“一对一”的关系。

但在单链表中,只能从头向后遍历查找元素,不能从后向前查找。既然每个结点是通过指针链接查找下一个结点,那么为什么不能给每个结点多加一个指针,让它可以向前查找呢?

图片

仍然以两个多项式求和为例,抽取操作对象:系数和指数,作为二元组。所有的二元组构成一个线性表,每个二元组作为一个结点。

图片

与单链表不同的是,现在每个结点增加一个指针域,让后一个结点的指针指向前一个结点,前一个结点的指针指向后一个结点,这就构成了双向链表。

从双向链表的结构上看,每个结点其实没有很大变化,只是增加了一个指针域,使得可以从两个方向遍历链表。其他方面的特性与单链表类似,也常添加头结点。

还是需要提醒读者,指针域只是用于存储下一个结点或者前一个结点的地址,计算机并不知道操作什么结构(只能通过地址运算查找下一个结点),示意图上的箭头,只是为了方便读者理解双向链表的结构,实际上并不存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值