在单链表中,从一已知结点出发,只能访问该结点及其后续结点,无法找到该结点之前的其他结点。而在单循环链表中,虽然从任一结点出发都可访问表中所有结点,但访问该结点的直接前驱结点的时间复杂度为O(n)。另外,在单链表中,若已知某结点的存储位置p,则将一新结点s插入p之前(称为前插),不如插入p之后方便,因为进行前插操作必须知道p的直接前驱位置。同理,删除p本身不如删除p的直接后继方便。因此,由于单链表的缺点,引入了双向链表。
1.双向链表(DoubleLinkedList)的概念双向链表指的是构成链表的每个结点中设立两个指针域:一个指向其直接前驱的指针域prior,一个指向其直接后继的指针域ne*t。这样形成的链表中有两个方向不同的链,故称为双向链表。
2.双向循环链表将双向链表的头结点和尾结点链接起来也能构成循环链表,其称为双向循环链表。
2.双向链表C语言实现的类型定义4.双向链表示意图双向链表示意,如图1所示。
图1双向链表示意
66037663626