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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(计算机软件基础实验报告2.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机软件基础实验报告2.docx

1、计算机软件基础实验报告2北京联合大学实验报告课程(项目)名称: 计算机软件技术基础(实验2) 学 院: 自动化学院 专 业:电气工程与自动化 班 级: 0910030101 学 号: 2009100301126 姓 名: 林驷淇 成 绩: 2011年4月24日一、任务与目的 1实验目的(1)掌握链表的概念。(2)熟练掌握线性表的链式存储结构。(3)熟练掌握线性表在链式存储结构上的运算。2实验内容(1)编写算法,根据用户输入的整数创建一个带头结点的单链表,-1作为输入数据的结束符。测试要求:建立空链表、非空链表的情况下测试程序运行情况。 (2)编写算法,在带有头结点的单链表中查找序号为i的结点和

2、值为x的结点并输出。测试要求:在空链表、i与x在链表头、i与x在链表尾、i与x在链表中间、i与x在链表中不存在的情况下测试程序运行情况。 (3)己知单链表中的元素非递减有序排列,编写算法删除单链表中值相同的多余的元素。测试要求:在空链表、有1组相同元素、有2组连续相同元素、有2组以上不连续相同元素的情况下测试程序运行情况。(4)已知单链表中的数据元素递增有序,编写算法,给定的两个数据Min和Max,删除表中值在min与max之间的结点。测试要求:在空链表、max小于链表第1个元素值、min大于链表最后1个元素值、min与max在链表中间的情况下测试程序运行情况。二、原理(条件)Visual C

3、+6.0 三、内容与步骤(1)编写算法,根据用户输入的整数创建一个带头结点的单链表,-1作为输入数据的结束符。测试要求:建立空链表、非空链表的情况下测试程序运行情况。测试数据为:10, 9, 8, 7, 6, 5, 4, 3, 2, 1主函数内的代码:linklist *createlist() int t; linklist *head,*s,*r; /s为新建结点,r为尾结点 head=(linklist*)malloc(sizeof(linklist);/开辟空间,建立一个头结点 r=head; printf(请输入数字序列,产生单链表,以-1结束。n); scanf(%d,&t); w

4、hile(t!=-1) s=(linklist*)malloc(sizeof(linklist); s-data=t; r-next=s; r=s; scanf(%d,&t); r-next=NULL; return head;运行结果:(2)编写算法,在带有头结点的单链表中查找序号为i的结点和值为x的结点并输出。测试要求:在空链表、i与x在链表头、i与x在链表尾、i与x在链表中间、i与x在链表中不存在的情况下测试程序运行情况。主函数内的代码:void findi(linklist *head) /查找结点为i的值 linklist *p,*q; int i=0,j=0; printf(输入要

5、查找的结点:n); scanf(%d,&i); if(i=1) q=head-next; else p=head-next; j=1; while(p!=NULL) p=p-next; j+; if(i=j) q=p; break; if(p=NULL) printf(超出范围,不存在); else printf(查找的元素为:); printf(%dn,q-data); 测试数据:查找结点为3的值运行结果:void findx(linklist *head) /查找值为x的结点 linklist *p; int ch; int j=0; printf(请输入要查找的数值:n); scanf(

6、%d,&ch); p=head-next; j=1; while(p!=NULL&p-data!=ch) p=p-next; j+; if(p=NULL) printf(你所输入的值不存在!n); else printf(第%d个元素为%dn,j,p-data);测试数据:查找值为3的值运行结果:(3)己知单链表中的元素非递减有序排列,编写算法删除单链表中值相同的多余的元素。测试要求:在空链表、有1组相同元素、有2组连续相同元素、有2组以上不连续相同元素的情况下测试程序运行情况。主函数内的代码:linklist *deld(linklist *head)/删除连续相同元素 linklist *

7、p,*q; p=head-next; printf(删除后链表为:n); if(p=NULL) return head; else while(p-next!=NULL) q=p-next; if(p-data=q-data) p-next=q-next; free(q); else p=p-next; q=q-next; return head; 测试数据:12 45 78 78 96 10 11 11 25 26 28 28 35 36 48 5 5 6 8 9 10 11 12 12 35 38 65 65 78 89运行结果:(4)已知单链表中的数据元素递增有序,编写算法,给定的两个数

8、据Min和Max,删除表中值在min与max之间的结点。测试要求:在空链表、max小于链表第1个元素值、min大于链表最后1个元素值、min与max在链表中间的情况下测试程序运行情况。主函数内的代码:linklist *del2(linklist *head) /删除链表中的min与max之间的元素 linklist *p,*q1,*q2=NULL; int max=0,min=0; printf(请输入min和maxn); scanf(%d%d,&min,&max); printf(删除后链表为:n); if(head-next=NULL) return head; if(head-next

9、-datamax) return head; else p=head; while(p-next!=NULL&p-next-datanext; if(p-next=NULL) return head; else q1=p-next;q2=q1-next; while(q2!=NULL&q2-datanext; p-next=q2; while(q1!=q2) p=q1;q1=q1-next; free(p); return head;测试数据:12 15 18 23 45 78 min为15 max为23运行结果:四、完整程序#include/printf和scanf提供头文件#include

10、/malloc和free提供头文件typedef int datatype;/定义数据元素的类型,命名为datatypetypedef struct node datatype data; struct node *next;linklist;/定义结点类型,命名为linklistlinklist *createlist() int t; linklist *head,*s,*r; /s为新建结点,r为尾结点 head=(linklist*)malloc(sizeof(linklist);/开辟空间,建立一个头结点 r=head; printf(请输入数字序列,产生单链表,以-1结束。n);

11、scanf(%d,&t); while(t!=-1) s=(linklist*)malloc(sizeof(linklist); s-data=t; r-next=s; r=s; scanf(%d,&t); r-next=NULL; return head;void printnode(linklist *head) /输出程序 linklist *r; r=head-next; if(r=NULL) printf(输入为空n); while(r!=NULL) printf(%dt,r-data); r=r-next; printf(n输出结束n);void findi(linklist *h

12、ead) /查找结点为i的值 linklist *p,*q; int i=0,j=0; printf(输入要查找的结点:n); scanf(%d,&i); if(i=1) q=head-next; else p=head-next; j=1; while(p!=NULL) p=p-next; j+; if(i=j) q=p; break; if(p=NULL) printf(超出范围,不存在); else printf(查找的元素为:); printf(%dn,q-data); void findx(linklist *head) /查找值为x的结点 linklist *p; int ch;

13、int j=0; printf(请输入要查找的数值:n); scanf(%d,&ch); p=head-next; j=1; while(p!=NULL&p-data!=ch) p=p-next; j+; if(p=NULL) printf(你所输入的值不存在!n); else printf(第%d个元素为%dn,j,p-data);linklist *deld(linklist *head)/删除连续相同元素 linklist *p,*q; p=head-next; printf(删除后链表为:n); if(p=NULL) return head; else while(p-next!=NU

14、LL) q=p-next; if(p-data=q-data) p-next=q-next; free(q); else p=p-next; q=q-next; return head; linklist *del2(linklist *head) /删除链表中的min与max之间的元素 linklist *p,*q1,*q2=NULL; int max=0,min=0; printf(请输入min和maxn); scanf(%d%d,&min,&max); printf(删除后链表为:n); if(head-next=NULL) return head; if(head-next-datamax) return head; else p=head; while(p-next!=NULL&p-next-datanext; if(p-next=NULL) return head; else q1=p-next;q2=q1-next; while(q2!=NULL&q2-datanext; p-next=q2; while(q1!=q2) p=q1;q1=q1-next; free(p); return head;void main()五、结论通过此次试验了解的链表的创建,运用了链表的删除和查找功能的实用。也更加强和巩固了C语言中构造函数的运用。六、评语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1