链式存储结构
双向链表是在单链表的每个结点中,再设置一个前驱结点的指针域
1 2 3 4 5 6 7 |
//结构 typedef struct DulNode { ElemType data; struct DulNode * prior;//直接前驱 struct DulNode * next;//直接后继 } DulNode,*DuLinkedList; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//双向链表插入元素 int InsertLinkElem(LinkedList * L,int i,ElemType e) { int j; LinkedList p,s; p = *L; j = 1; while(p && j < i) { p = p->next; ++j; } if(!p || j > i) return 0; s = (LinkedList)malloc(sizeof(Node)); s->data = e; s->prior = p; s->next = p->next; p->next->prior = s; p->next = s; return 1; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//双向链表删除元素 int DeleteLinkElem(LinkedList * L,int i,ElemType * e) { int j; LinkedList p; p = *L; j = 1; while(p && j < i) { p = p->next; ++j; } if(!(p->next) || j > i) return 0; p->prior->next = p->next; p->next->prior = p->prior; free(p); return 1; } |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 大话数据结构_基础概念11/01
- ♥ 大话数据结构_图表示01/14
- ♥ Dump分析:空指针访问二,重复释放堆内存二03/30
- ♥ 大话数据结构_二叉树11/03
- ♥ 大话数据结构_栈_应用11/01
- ♥ 大话数据结构_栈11/01