- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计单链表操作
《数据结构课程设计》报告
题目: 单链表操作
专业: 计算机科学与技术
班级:
单链表操作
针对带头结点的单循环链表,编写实现以下操作的算法函数。
实现要求:
⑴ 单链表建立函数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; //返回头指针
}
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;
}
}
(3)Search(LNode *head,DataType *a,DataType *b)
//求链表的最大值和次大值,分别由*a和*b带回
void Search(LNode *head,DataType *a,DataType *b)
{
LNode *p,*Max,*Secmax;
p=head-next-next;//*Max和*Secmax指第一个结点,*p指向第二个结点,
Max=head-next;
Secmax=head-next-next;;
while(p!=head)
{
if(Max-data p-data) //*Max指向最大值
{
if(p-data Secmax-data)
Secmax=p;
}
else //*Sexmax指向次大值
{
Secmax=Max;
Max=p
您可能关注的文档
- 教师职业道德形成性考核册全套答案.doc
- 教师职业道德笔记-超级全面.doc
- 教师职业道德规范60条.doc
- 教师课堂教学评价方案张未琴.doc
- 教师职称考试教育学心理学考试辅导材料及题库.doc
- 教师职业道德期末试卷D.doc
- 教师课堂教学竞赛总结2010.doc
- 教师职业道德试题(二套).doc
- 教师资格考试面试经验总结.docx
- 教师课堂激励性语言.doc
- DB32T3444 健康企业评估规范.pdf
- DBJ25-82-2000 甘肃省聚苯板外保温墙体设计与施工规程 甘肃省地方标准.pdf
- DB32T-核与辐射突发事件卫生应急处置技术规范 第3部分:现场流行病学调查及编制说明.pdf
- DB44T1430-2014 冷冻水产品流通冷链管理技术规范.pdf
- TCASME-监控系统安装与维护规范.pdf
- TCSAE-汽车远程升级(OTA)信息安全测试规范.pdf
- TJSSAE-智能网联汽车开放道路测试管理要求及编制说明.pdf
- TEERT-挥发性有机物污染治理设施工况自动监控技术规范.pdf
- TCASME-三跨连续节段梁悬浇施工技术规范.pdf
- DB36T-行政执法案卷评查规范编制说明.pdf
文档评论(0)