C语言双向链表

双向链表,有两个指针域,一个指向前节点一个指向后节点。

1 typedef int elemtype;
2 
3 typedef struct dnode{
4     elemtype date;
5     struct dnode *next,*prior;
6 }DLinkedList;

初始化与单链表相同。前插运算:先将带插入节点的前后指针连上链表,再使链表上的指针指向节点(顺序不能反)。

1 void DInsertBefore(DLinkedList *p,DLinkedList *s){
2     
3     s->next = p;
4     s->prior = p->prior;
5     p->prior->next = s;
6     p->prior = s;
7     
8 }

删除节点本身,每个节点都有前后指向

1 void DDeleteNode(DLinkedList *p){
2     
3     p->prior->next = p->next;
4     p->next->prior = p->prior;
5     free(p);
6     
7 }

 

posted @ 2018-11-27 16:31  捞的不谈  阅读(214)  评论(0编辑  收藏  举报