1.定义
循环单链表的出现,虽然能够实现从任一结点出发沿着链能找到其前驱结点,但时间耗费是O(n) 。如果希望从表中快速确定某一个结点的前驱,另一个解决方法就是在单链表的每个结点里再增加一个指向其前驱的指针域prior。 这样形成的链表中就有两条方向不同的链,我们可称之为双(向)链表(Double Linked List)。
双链表的结构定义如下:
typedef struct Dnode
{ elemtype data;
struct Dnode *prior, *next;
} DNode, *DoubleList;
2.基本操作
1.初始化双向链表
//初始化循环双向链表
DoubleList InitList(DoubleList L)
{
L=(DoubleList)malloc(sizeof(DNode));
L->next=L;
L->prior=L;
printf("创建成功。\n");
return L;
}