谈谈双向链表(一)

在谈双向链表之前,要首先明确一下线性表的概念,因为双向链表是线性表的另一种链式存储形式。下面首先说下线性表的定义:

线性表:由有限多个性质相同的数据元素构成的一个序列就是线性表。
接下来,介绍一下双向链表。
双向链表的定义:
双向链表是线性表的的另一种链式存储结构形式。在该存储结构中,每个节点设置了二个方向的指针,分别指向当前节点的直接前驱和直接后继。
双向链表的优点:
克服了单向链表只能向一个方向搜索的缺陷,使用双向链表特别适合向两个方向移动访问的线性表,这样效率比较高。

双向链表的结点结构:
在双向链表中,每个结点除了数据域以外,还有两个指针域,其中一个指针域为后继域(next),用来存放当前结点的直接后继结点的地址;而另一个指针域为前驱域(prior),用来存放当前节点的直接前驱结点的地址。

双向链表的分类:

双向链表分为非循环双向链表和循环双向链表。在非循环双向链表中,最后一个结点的后继域存放的指针指向空(NULL),在循环的双向链表中,最后一个结点的后继域存放的指针指向头结点(head);同理,在非循环双向链表中,第一个结点的前驱域的指针指向空(NULL),在循环的双向链表中,第一个结点的前驱域的指针指向链表的最后一个结点的地址。

你可能感兴趣的:(算法,链表,数据结构,java)