ImageVerifierCode 换一换
格式:DOC , 页数:25 ,大小:191.04KB ,
资源ID:1140929      下载积分:10 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1140929.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(2015-2016学年第二学期《算法与数据结构》课程实验报告.doc)为本站会员(文****钱)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

2015-2016学年第二学期《算法与数据结构》课程实验报告.doc

1、2015-2016 学 年 第 二 学 期 算 法 与 数 据 结 构 课 程 实 验 报 告专业 软件工程学生姓名班级 软件 141学号实验学时 16实验教师信息工程学院实验一 单链表的基本操作一、实验目的1.熟悉 C 语言上机环境,进一步掌握 C 语言的基本结构及特点。2.掌握线性表的各种物理存储表示和 C 语言实现。3.掌握单链表的各种主要操作的 C 语言实现。4.通过实验理解线性表中的单链表存储表示与实现。二、主要仪器及耗材普通计算机三、实验内容与要求1、用 C 语言编写一个单链表基本操作测试程序。(1)初始化单链表(2)创建单链表(3)求单链表长度(4)输出单链表中每一个结点元素(5

2、)指定位置插入某个元素(6)查找第 i 个结点元素的值(7)查找值为 e 的结点,并返回该结点指针(8)删除第 i 个结点(9)销毁单链表2、实验要求(1)程序中用户可以选择上述基本操作。程序启动后,在屏幕上可以菜单形式显示不同功能,当按下不同数字后完成指定的功能,按其他键,则显示错误后重新选择。(2)要求用线性表的顺序存储结构,带头结点的单链表存储结构分别实现。(3)主函数实现对基本操作功能的调用。3、主要代码(1)初始化单链表LinkList *InitList() /创建一个空链表,初始化线性表LinkList *L;L=(LinkList *)malloc(sizeof(LinkLis

3、t);L-next=NULL;return L;(2)创建单链表/头插法void CreateListF(LinkList *L)LinkList *s;int i=1,a=0;while(1)printf(“输入第%d 个元素(0 表示终止)“,i+);scanf(“%d“,if(a=0)break;s=(LinkList *)malloc(sizeof(LinkList);s-data=a;s-next=L-next;L-next=s;(3)求链表长度int ListLength(LinkList *L) /求链表长度int n=0;LinkList *p=L;while(p-next!=

4、NULL)p=p-next;n+;return(n);(4)在指定位置插入元素int InsertList(LinkList *L,int i,ElemType e)LinkList *p=L,*s;int j=0;while(p!=NULLj+; /找出要插入的位置的前一个位置if(p=NULL)return 0;elses=(LinkList *)malloc(sizeof(LinkList);s-data=e;s-next=p-next;p-next=s;return 1;(5)输出链表void DispList(LinkList *L) /输出链表LinkList *p=L-next;

5、while(p!=NULL)printf(“%d“,p-data);p=p-next;printf(“n“);(6)查找链表中指定元素int GetElem(LinkList *L,int i) /查找链表中指定元素LinkList *p=L;int j=0;while(jnext;if(p=NULL)return 0;elsereturn p-data;(7)查找值是 e 的结点并返回该指针LinkList *LocateElem(LinkList *L,ElemType e)/查找值是 e 的结点并返回该指针int i=1;LinkList *p=L;while(p!=NULL)if(p-

6、data=e) return p;if(p=NULL)return NULL;(8)删除元素int ListDelete(LinkList *L,int i,ElemType *e) /删除元素LinkList *p=L,*q;int j=0;while(p!=NULLj+; /找到要删除元素地址的前一个地址if(p=NULL) return 0; /不能删除elseq=p-next;*e=q-data;p-next=q-next;free(q); /删除成功return 1;(9)销毁链表void DestroyList(LinkList *L)/销毁链表LinkList *pre=L,*p

7、=L-next;while(p!=NULL)free(pre);pre=p;p=pre-next;free(pre);main 函数:int main()LinkList *L;ElemType e;int i;L=InitList();CreateListF(L);DispList(L);printf(“输入要查找的元素位置:n“);scanf(“%d“,e=GetElem(L,i);printf(“%dn“,e);printf(“单链表长度为:%dn“,ListLength(L);printf(“输入要删除元素的位置:“);scanf(“%d“,if (iListLength(L) pri

8、ntf(“超出范围重新输入“);scanf(“%d“,if(ListDelete(L,i,else DispList(L);printf(“输入插入元素的位置和值:“);scanf(“%d%d“,InsertList(L,i,e);DispList(L);return 0;4、测试数据及测试结果输入:23 56 12 28 45输出:四、注意事项1、存储结构定义和基本操作尽可能用头文件实现。2、采用缩进格式,加足够多的注释。3、注意循环条件、边界条件等。4、善于发现问题、分析问题、解决问题,并总结思考。5、对于算法描述及实现完全理解。五、拓展提高1、若 L 为带头结点的单链表,删除最大值结点2

9、、将两个单链表合并为一个单链表实验二 循环链表的基本操作一、实验目的熟练掌握线性表的基本操作在链式循环存储结构上的实现。二、主要仪器及耗材普通计算机三、实验内容1、在上一次单链表基本操作的基础上,修改程序,将其改为单循环链表,并实现相关操作。(1)初始化单循环链表(2)创建单循环链表(3)求单循环链表长度(4)输出单循环链表中每一个结点元素(5)指定位置插入某个元素(6)查找第 i 个结点元素的值(7)查找值为 e 的结点,并返回该结点指针(8)删除第 i 个结点(9)销毁单循环链表2、实验要求(1)程序中用户可以选择上述基本操作。程序启动后,在屏幕上可以菜单形式显示不同功能,当按下不同数字后

10、完成指定的功能,按其他键,则显示错误后重新选择。(2)要求用不带头结点的循环链表实现。(3)具体功能测试由主函数实现。3、主要代码(1)初始化单循环链表void initLinkList(LinkList L)/初始化循环单链表L=(LinkList)malloc(sizeof(LNode);L-next=L;/创建一个空表(2)创建单循环链表LinkList creat(LinkList L)/给循环链表赋值LinkList p,q,r;int N,i=0;/printf(“请输入第%d 个值:“,+i);while(1)printf(“请输入第%d 个值:“,+i);scanf(“%d“,

11、/输入节点的值if(N=0)/以 0 为结尾break;if(i=1)/当只有一个节点时p=(LinkList)malloc(sizeof(LNode);/给 p 节点分配内存空间p-date =N;p-next =NULL;q=p;else/当节点不为 1 时r=(LinkList)malloc(sizeof(LNode);r-date =N;r-next =NULL;q-next =r;q=r;/if(q!=NULL)q-next =p;/将尾节点指向头节点完成循环L=p;return L;/返回头指针(3)打印循环链表void print(LinkList L)/打印循环链表LinkLi

12、st p;/printf(“*n“);p=L;/printf(“*n“);if(p=NULL)/当链表尾空表时printf(“这是一个空表n“);while(p-next!=L)/只有当 p 节点不为尾节点是打印节点中的数据域/printf(“*n“);printf(“%d “,p-date );p=p-next ;printf(“%dn“,p-date );/打印尾节点中的数据(4)求链表的长度int length(LinkList L)/求链表的长度LinkList p;/printf(“*n“);int n=1;/printf(“*n“);p=L;/printf(“*n“);while(p-next!=L)/当 p 节点不为尾节点时计数n+;/printf(“*n“);p=p-next;return n;/返回链表长度/printf(“%d*n“,n);(5)删除指定位置的节点LinkList del(LinkList L,int flag)/删除指定位置的节点LinkList p,q;int i;

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。