链式存储结构
双向链表是在单链表的每个结点中,再设置一个前驱结点的指针域
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/02
- ♥ 大话数据结构_二叉树11/03
- ♥ 大话数据结构_图01/12
- ♥ 大话数据结构_二叉树_结构&&遍历&&推导11/03
- ♥ 大话数据结构_算法相关&&AVL&&B树相关02/20
- ♥ 大话数据结构_赫夫曼树与应用01/11