网站大量收购闲置独家精品文档,联系QQ:2885784924

c语言数据结构双向链表.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构上机实验 课后练习报告 姓名:冯天明 学号: 班级:通信141 2015年9月28日星期一 实验三: 编写一个程序,实现双链表的各种基本运算,并在此基础上设计一个主程序完成以下功能。 1.初始化双链表L 2.依次采用尾插法或者头插法插入元素a,b,c,d,e 3.输出双链表L 4.输出双链表的长度 5.判断双链表是否为空 6.输出双链表的第四个元素 7.输出元素a的位置 8.在第三个元素位置插入元素f 9.输出双链表L 10.删除双链表L的第四个元素 11.输出双链表L 12.释放双链表 #includestdio.h #includemalloc.h #includestdlib.h #define OK 0 #define ERROR -2 #define OVERFLOW -1 typedef char ElemType; typedef struct DuLNode //定义双向链表 { ElemType data; DuLNode *prior; DuLNode *next; }DuLNode,*DuLinkList; void InitDuLinkList( DuLinkList h) //创建一个空表 { h = new DuLNode;//(DuLinkList)malloc(sizeof(DuLNode)); h-next = h-prior; } void CreateDuLinkList(DuLinkList h,int n) //初始化链表 { DuLNode *p,*q; InitDuLinkList(h); q = h; printf(输入%个元素:\n,n); for(int i = 0;in;i++) { p = (DuLinkList)malloc(sizeof(DuLNode)); scanf(%c,p-data); fflush(stdin); q-next = p; p-prior = q; q = p; } q-next = NULL; } int DestroyList(DuLinkList L) //销毁链表 { DuLNode *p=L ; while(L-next ) //直到达最后一个节点 { p = L-next; L-next = p-next; free( p); } L-prior =NULL; return OK; } int ListEmpty(DuLinkList L) { return (L-next == NULL L-prior == NULL); } DuLNode *GetElem(DuLinkList h,int i) //获取对应节点的元素 { DuLNode *p; p = h-next; int j = 1; while(pji) { p = p-next; ++j; } if(j == i) return p; else return NULL; } int DuLinkListInser(DuLinkList h,int i,ElemType e) { DuLNode *p,*s; p = GetElem(h,i-1); if(!p) return ERROR; s = (DuLinkList)malloc(sizeof(DuLNode)); s-data = e; if(p-next) //如果插入的不是尾节点 { p-next-prior = s; s-next = p-next; s-prior = p; p-next = s; } else //插入的是尾节点 { s-next = p-next; p-next = s; s-prior = p; } return OK; } int DeleListElem(DuLinkList L ,int i) { DuLNode *p,*q; p = GetElem(L,i-1); if(!p) return ERROR; //删除的元素不存在 if(p-next) //如果删除的不是最后一个节点 { q = p-next; q-next-prior = p; p-next = q-next; } else { q = p-next; p-next = NULL; } free( q); return OK; } int LocateElem(DuLinkList L,ElemType e)

您可能关注的文档

文档评论(0)

anma + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档