双链表
双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
代码实现双链表
定义双链表结点
typedef struct DNode {
ElemType data;
struct DNode *prior, *next;
}DNode, *DLinkList;
初始化双链表
bool InitDLinkList(DLinkList &L) {
L = (DNode *) malloc(sizeof(DNode));
if(L==NULL) {
return false;
}
L->prior = NULL;
L->next = NULL;
}
双链表判空
bool Empty(DLinkList L) {
if(L->next == NULL) {
return true;
}else{
return false;
}
}
双链表的插入
bool InsertNextDNode(DNode *p, DNode *s) {
s->next = p->next;
if(p->next !=NULL) {
p->next->prior = s;
}
s->prior = p;
p->next = s;
}