数据结构课程设计单链操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计单链操作

《数据结构》课程设计报告内容及其格式 《数据结构课程设计》报告 题目: 单链表操作 专业: 计算机科学与技术 班级: 单链表操作 针对带头结点的单循环链表,编写实现以下操作的算法函数。 实现要求: ⑴ 单链表建立函数create:先输入数据到一维数组A[M]中,然后根据一维数组A[M]建立一个单循环链表,使链表中个元素的次序与A[M]中各元素的次序相同,要求该函数的时间复杂度为O(m); ⑵ 定位查找函数Locate:在所建立的单循环链表中查找并返回值为key的第1个元素的结点指针;若找不到,则返回NULL; ⑶ 求出该链表中值最大和次大的元素值,要求该算法的时间复杂度为O(m),最大和次大的元素值通过指针变量带回,函数不需要返回值; ⑷ 将链表中所有值比key(值key通过形参传入)小的结点作为值为key的结点前驱,所有值比key大的结点作为值为key的结点后继,并尽量保持原有结点之间的顺序,要求该算法的时间复杂度为O(m); ⑸ 设计一个菜单,具有上述处理要求和退出系统功能。 ⒈ 本人完成的工作: 一、定义结构体:LNode 二、编写以下函数: (1)建立单循环链表 (2)建立定位查找函数 (3)求出链表中最大和次大值 (4)将链表中的值和输入的Key比较,小的作为key前驱结点,大的作为key的后继结点 三、设计具有上述处理要求和退出系统菜单 ⒉ 所采用的数据结构:单链表 数据结构的定义: typedef struct Node //定义结点的结构体 { DataType data; //数据域 struct Node *next; //指针域 }LNode; //结点的类型 ⒊ 所设计的函数 Create(void) LNode *Create(void) //建立单循环链表,链表头结点head作为返回值 { int i,j,n,A[M]; //建立数组A【M】 LNode *head,*p,*move; head=(LNode*)malloc(sizeof(LNode)); //创建空单循环链表 head-next=head; move=head; printf(请输入数组元素的个数:); //输入数组 scanf(%d,n); printf(请输入数组:); for(i=0;in;i++) //保存数组元素 scanf(%d,A[i]); //勾链建表,使链表中元素的次序与数组A各元素次序相同 for(j=0;jn;j++) //根据一维数组A[M]建立一个单循环链表 { p=(LNode*)malloc(sizeof(LNode)); p-data=A[j]; p-next=move-next; move-next=p; move=move-next; } return head; //返回头指针 } 开始 开始 定义变量:int i ,j,n,A[M]; LNode *head,*p,*move; 建立空单循环链表head 建立一维数组A【M】 j=0 Jn if (A[j]==32767)break; p=(LNode*)malloc(sizeof(LNode)); p-data=A[j]; p-next=move-next; // move-next=p; move=move-next; 结束 J++ Y N Locate(LNode *head,DataType key) LNode *Locate(LNode *head,DataType key) //建立定位查找函数Locate { LNode *q=head-next; //查找并返回值为key的第1个元素的结点指针;若找不到,则返回NULL while(q!=head q-data!=key) q=q-next; if(q-data==key) return q; else { printf(查找的结点不存在!!\n); return NULL; } } Y Y 开始 定义变量: *q=head-next;; 结束 q!=headq-data!=key q=q-next q-data==key return q Return NULlL Y N N (3)Search(LNode *head,DataType *a,DataType *b) //求链表的最大值和次大值,分别由*a和*b带回 void Search(LNode *he

文档评论(0)

186****0507 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档