数据结构实验 建立双向循环链表以及插入删除操作.docx

上传人:牧羊曲112 文档编号:3560131 上传时间:2023-03-13 格式:DOCX 页数:3 大小:37.34KB
返回 下载 相关 举报
数据结构实验 建立双向循环链表以及插入删除操作.docx_第1页
第1页 / 共3页
数据结构实验 建立双向循环链表以及插入删除操作.docx_第2页
第2页 / 共3页
数据结构实验 建立双向循环链表以及插入删除操作.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构实验 建立双向循环链表以及插入删除操作.docx》由会员分享,可在线阅读,更多相关《数据结构实验 建立双向循环链表以及插入删除操作.docx(3页珍藏版)》请在三一办公上搜索。

1、数据结构实验 建立双向循环链表以及插入删除操作 实验一 要求:建立双向循环链表 实现链表的插入、删除 运行程序点此处 Demo_1.exe 实验程序源代码: #include stdafx.h #include #include #define OVERFLOW -2 #define ERROR 0 #define OK 1 typedef int status; /双向循环链表的存储结构 typedef struct DuLNode int data; int Length; struct DuLNode *prior; struct DuLNode *next; DuLNode,*DuLi

2、nkList; /构建一个空的双向循环链表 void InitList(DuLNode *p) *p=(DuLNode *)malloc(sizeof(DuLNode); if(*p) (*p)-next=(*p)-prior=*p; (*p)-Length=0; else exit(OVERFLOW); /双向循环链表的创建 void Create(DuLinkList &L,int n) /输入n个元素的值,建立带头结点的双线循环链表L DuLinkList p=L,q; int i; for(i=1;idata); p-next =q; q-prior=p; q-next=L; L-pr

3、ior =q; p=q; L-Length +; /查找元素的位置 DuLinkList GetElemP(DuLinkList h,int i) int j; DuLinkList p=h; for(j=1;jnext ; return p; /结点的插入 status Listinsert(DuLNode *m,int i,int e) /在带头结点的双链循环线性表L中第i个位置之前插入元素e,i的合法值为1i表长 DuLinkList p,q; if(i(m-Length) / i值不合法 return ERROR; p=GetElemP(m,i); if(!p) return ERRO

4、R; q=(DuLinkList)malloc(sizeof(DuLNode); if(!q) return OVERFLOW; q-data=e; q-prior=p-prior; p-prior-next=q; q-next=p; p-prior=q; m-Length+; printf(您在双向循环链表第%d个位置之前插入了一结点元素:%dn,i,e); return OK; /结点的删除 status ListDelete(DuLinkList L,int i) /删除带头结点的双链循环线性表L的第i个元素,i的合法值为1i表长 DuLinkList p; if(iprior-next

5、=p-next; p-next-prior=p-prior; L-Length -; printf(删除了双线循环链表中第%d个结点,元素值为:%dn,i,p-data); free(p); return OK; /结点的输出 void Display( DuLinkList L) DuLinkList p; printf(双向循环链表中的结点的数据为:); for(p=L-next ;p-next !=L;) printf(%d,p-data); printf( & ); p=p-next ; printf(%dn,p-data ); /主函数实现链表的创建,插入,删除等操作 void ma

6、in DuLinkList L; int n,i; InitList(&L) ; printf(你想创建几个循环节点就输入几就行啦,请输入:); scanf(%d,&n); Create(L,n); Listinsert(L,3,3);/结点的插入 printf(您想删除哪个结点呢?); scanf(%d,&i); printf(您确定删除此结点吗?1:YES 2:NO); if(i=2) printf(您想删除哪个结点呢?); scanf(%d,&i); ListDelete(L,i); else ListDelete(L,i);/结点的删除 Display(L); printf(双向循环链表中结点的个数为:%dn,L-Length);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号