首页 > 代码库 > 双向链表的初始化,建立,添加节点和删除节点(注意插入和删除要分三种情况)
双向链表的初始化,建立,添加节点和删除节点(注意插入和删除要分三种情况)
/*双向循环链表*/ #include "declaration.h" typedef struct DulNode { int data; struct DulNode *next,*prior; }DulNode,*DulLinkList; Status InitList_DUL(DulLinkList &L)//初始化一个带头结点的双向循环链表,ok { L=(DulNode*)malloc(sizeof(DulNode)); L->next=L; L->prior=L; if (!L) exit(OVERFLOW); return OK; } void DestoryList_DUL(DulLinkList &L)//销毁一个带头结点的双向循环链表,ok { DulNode *p; while(L) { p=L->next; free( L); L=p; } } void CreateList_DUL(DulLinkList &L)//正序创建一个带头结点的双向循环链表,ok { DulLinkList p,s;//中间变量 int n,i; printf("input Length: \n"); scanf("%d",&n); p=L; printf("input value with enter:"); for(i=n;i>0;i--) { s=(DulLinkList)malloc(sizeof(DulNode)); scanf("%d",&s->data); p->next=s; s->prior=p; p=s; } p->next=L; L->prior=p; } DulLinkList LocateELem_DUL(DulLinkList L,ElemType x) {//定位值为e的结点的位置 DulNode *p; p=L->next; while(p!=L) { if(!compare(x,p->data)) return p; p=p->next; } printf("the element is not exists\n"); return NULL; } Status InsertAfter_DUL(DulLinkList &L,ElemType y)//在带头结点的双向循环链表中的x值后插入y值,李大友2.15 { DulLinkList p,s; ElemType x; printf("value you want to find is :"); scanf("%d",&x); p=LocateELem_DUL(L,x); if(!p) { printf("%d not exists.\n",x); return ERROR; } s=(DulLinkList)malloc(sizeof(DulNode)); s->data=http://www.mamicode.com/y;>
删除操作借鉴了:
zz198808 的博客 http://blog.csdn.net/zz198808/article/details/7934427,在此表示感谢
双向链表的初始化,建立,添加节点和删除节点(注意插入和删除要分三种情况)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。