




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_上机实验报告学 院: 计算机与信息技术学院专 业: 计算机科学与技术(师范)课程名称: 数据结构实验题目: 单链表建立及操作班级序号: 师范1班学 号: 201421012731 学生姓名: 邓雪指导教师: 杨红颖完成时间:2015年12月25号 1、 实验目的: (1)动态地建立单链表; (2)掌握线性表的基本操作:求长度、插入、删除、查找在链式存储结构上的实现; (3)熟悉单链表的应用,明确单链表和顺序表的不同。2、 实验环境: Windows 8.1Microsoft Visual c+ 6.03、 实验内容及要求: 建立单链表,实现如下功能:1、建立单链表并输出(头插法建立单链表);2、求表长;3、按位置查找4、按值查找结点;5、后插结点;6、前插结点7、删除结点;四、概要设计:1、通过循环,由键盘输入一串数据。创建并初始化一个单链表。 2、编写实现相关功能函数,完成子函数模块。 3、 调用子函数,实现菜单调用功能,完成顺序表的相关操作。main建表求表长查找插入删除输出退出五、代码:#include#includetypedef char datatype;typedef struct nodedatatype data;struct node *next;linklist;linklist *head,*p;/头插法建立单链表linklist *Creatlistf() char ch; linklist *head,*s;head=NULL;ch=getchar();printf(请输入顺序表元素(数据以$结束):n);while(ch!=$)s=(linklist *)malloc(sizeof(linklist);s-data=ch;s-next=head;head=s;ch=getchar();return head;/求单链表的长度void get_length(struct node *head) struct node *p=head-next;int length=0; while(p)length+;p=p-next;head-data=length;printf(该单链表的长度为:%dn,head-data);/按序号查找结点linklist *Get(linklist *head,int i) int j;linklist *p;p=head;j=0; while(p-next!=NULL)&(jnext;j+;if(i=j)return p;/按值查找结点linklist *Locate(linklist *head,datatype key) int pos=0; p=head-next;printf(查找结点位置为:);while(p!=NULL)if(p-data!=key)p=p-next;pos+;else pos+;break;return p;/后插结点void Insertafter(linklist *p,datatype x) linklist *s; s=(linklist *)malloc(sizeof(linklist);s-data=x;s-next=p-next;p-next=s;printf(插入成功);/前插结点void Insertbefore(linklist *p,datatype x) linklist *s;s=(linklist *)malloc(sizeof(linklist);s-next=p-next;s-data = p-data;p-data=x;p-next=s;/删除结点linklist *Deleteafter(linklist *head) int i;linklist *r,*p;printf(请输入要删除的结点位置:);scanf(%d,&i);if(i=1)r=head;head=head-next;elsep=Get(head,i-1-1);r=p-next;p-next=r-next;free(r);return head;/输出单链表void output(linklist *p) while(p-next!=NULL)printf(%c ,p-data);p=p-next;printf(n);void main() linklist *head; int k,i,pos; char x; datatype key; printf(_单链表的操作_n); printf(t1.头插法建立单链表n); printf(t2.输出单链表n); printf(t3.求单链表的长度n); printf(t4.按序号查找结点n); printf(t5.按值查找结点n); printf(t6.后插结点n); printf(t7.前插结点n); printf(t8.删除接点n); printf(t9.退出n); do printf(选择所需功能: ); scanf(%d,&k); switch(k) case 1:head=Creatlistf(); break; case 2:printf(单链表为:n); output(head); break; case 3:get_length(head); break; case 4:printf(请输入要查找的结点序号: ); scanf(%d,&i); getchar(); printf(结点的值为:%cn,Get(head,i-1)-data); break; case 5:printf(请输入要查找的结点值: ); scanf(%c,&key); getchar(); printf(%d,Locate(head,key); printf(n); break; case 6:printf(输入要插入的结点位置:); scanf(%d,&pos); getchar(); printf(请输入插入的结点值:); scanf(%c,&x); getchar(); Insertafter(Get(head,pos-1),x); printf(插入成功); break; case 7:printf(输入要插入的结点位置和结点值(前插)(p,x):); scanf(%d,%c,&pos,&x); getchar(); Insertbefore(Get(head,pos-1),x); printf(插入成功); break; case 8: head=Deleteafter(head); break; case 9:printf(退出); exit(0); default:printf(输入错误n); exit(0);while(1);六、运行界面菜单功能七、实验中遇到的问题及总结二次输出链表元素时链表的第一个结点会变成乱码字符。第一次输出没有错误。顺序表和单链表的区别:在顺序表中,我们是用一组地址连续的存储单元来依次存放线性表的结点,因此结点的逻辑次序和物理次序一致。而链表则不然,链表是用一组任意的存储单元来存放线性表的结点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任何位置上,因此,链表中结点的逻辑次序和物理次序不一定相同。为了能够正确表示结点间的逻辑关系,在存储每个结点值得同时,还必须存储指示后继结点的地址(或位置)信息,这个信息称为指针或链。本次实验采用头插法建立链表,虽然头插法简单,但生成的链表中结点的的次序和输入的顺序相反。若希望二
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院奉献爱心倡议书
- 努力的感言15篇
- 2025年上半年安徽交控集团所属交控资源公司招聘7人考前自测高频考点模拟试题及答案详解参考
- 2025年安徽理工大学公开招聘电气与工程学院副院长考前自测高频考点模拟试题及一套完整答案详解
- 2025年《中国烟草》杂志社有限公司(中国烟草总公司传媒中心)招聘考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年5月广西师范大学劳动合同制员工招聘1人考前自测高频考点模拟试题参考答案详解
- 2025年滨州市面向社会公开招聘硕博士高层次人才(168人)模拟试卷及参考答案详解1套
- 2025年海上风力发电场运维成本效益分析与技术创新策略报告
- 2025年数字人民币跨境支付技术合规性与监管策略研究报告
- 2025年环保型表面处理技术在环保产业政策支持下的创新发展报告
- 肿瘤微环境中的细胞间通信
- 麦肯锡商业计划书模板
- 项目经理职业生涯规划
- 除锈剂MSDS参考资料
- 高一英语选择性必修一课文及翻译(外研版新教材)中英Word精编文档
- 社会调查研究抽样课件
- 消防管道支架工程量计算表
- 应用成型的双面彩钢板复合风管代替传统的铁皮风管
- JJF(石化)006-2018漆膜弹性测定器校准规范
- 东华软件需求调研提纲汇总版与03-02同步
- 全国优质课一等奖初中数学《有理数的乘方》精品课件
评论
0/150
提交评论