




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武夷学院实验报告课程名称:数据结构与算法设计_____项目名称:_链表的基本操作与实现_姓名:_专业:班级:_学号:__同组成员_无实验预习部分注:1、实验预习部分包括实验环境准备和实验所需知识点准备。注:1、实验预习部分包括实验环境准备和实验所需知识点准备。2、若是单人单组实验,同组成员填无。实验环境准备:1.硬件:PC机一台2.软件:Windows操作系统、C语言运行环境实验所需知识点准备:用数组实现表时,无需为表示表元素之间的逻辑关系增加额外的存储空间,可以方便地随机存取表中任一位置的元素。但是插入和删除运算不方便,效率较低,而且数组需要分配连续的存储空间,不利于表大小的动态改变。用指针将存储表元素的那些单元依次串联在一起,避免了在数组中用连续的单元存储元素的缺点,在执行插入和删除运算时,不再需要移动元素来腾出空间或填补空缺。但是,需要在每个单元中设置指针来表示表中元素之间的逻辑关系,增加了额外的存储空间开销。为了将存储表元素的所有单元用指针串联起来,每个单元包含一个元素和一个指针,其中指针指向表中下一个元素所在的单元。对于表元素的插入删除操作,只需要接解除结点间链接的逻辑关系即可,而无需移动元素。用指针表示表的结构通常称为单链接表,简称单链表或链表。了解并掌握单链表的存储结构的描述方法,上机实现单链表的基本操作。二、实验过程记录注:实验过程记录要包含实验目的、实验原理、实验步骤,页码不够可自行添加。注:实验过程记录要包含实验目的、实验原理、实验步骤,页码不够可自行添加。1.实验内容与要求(1)建立一个带头结点的单链表head,并输出该链表。单链表的数据元素由用户从键盘输入,用户输入的值为-1时代表结束。(2)在链表中插入一个数据元素,输出插入后的链表。(3)在链表中删除一个元素,输出删除后的链表。2.源代码(包括主要结构、主要语句、函数注释说明)#include<stdio.h>#include<stdlib.h>typedefstructLNode{intdata;structLNode*next;}LNode,*LinkList;LinkListCreateList(LNode*head)//创建单链表{intc=1,data;LNode*p,*q; p=(LNode*)malloc(sizeof(LNode)); data=0;p->next=NULL;head=p;while(c){printf("请输入数据元素且当输入值为-1时结束输入:");scanf("%d",&data); if(-1!=data){q=(LNode*)malloc(sizeof(LNode));q->data=data;p->next=q;p=q;}elsec=0;p->next=NULL;}returnhead;}LinkListListInsert(LNode*head,inti,inte){ //在带头结点的单链线性表head中第i个位置之前插入元素e intj=0; LinkLists=NULL,p=NULL; p=head; while(p&&j<i-1){p=p->next;++j;}//寻找第i-1个结点 if(!p||j>i-1)//i小于1或者大于表长+1 {printf("输入的位置不合法!\n"); returnhead;} s=(LinkList)malloc(sizeof(LNode));//生成新结点 s->data=e;s->next=p->next;//插入head中 p->next=s; returnhead;}LinkListListDelete(LNode*head,inti,inte){ //在带头结点的单链线性表head中,删除第i个元素,并由e返回其值intj;LinkListq=NULL,p=NULL;p=head;j=0;while(p->next&&j<i-1){//寻找第i个结点,并令p指向其前趋p=p->next;++j; }if(!(p->next)||j>i-1) {printf("输入的位置不合法!\n");returnhead; }q=p->next;p->next=q->next;//删除并释放结点free(q);returnhead;}voidprint(LNode*head)//输出单链表{ LNode*p; p=head; p=p->next; printf("单链表为:"); while(p!=NULL) { printf("%d",p->data); p=p->next;} printf("\n");}voidmain(){intm,i,e;LNode*head=NULL;head=CreateList(head);print(head);do{ printf("\n***********目录************\n");printf("1.在单链表中插入数据元素\n");printf("2.在单链表中删除数据元素\n");printf("0.结束程序\n");printf("***************************\n");printf("请选择所需操作(0-2):");scanf("%d",&m);switch(m){case1://在单链表中插入数据元素printf("依次输入插入位置和数据元素(空格隔开):");scanf("%d%d",&i,&e);head=ListInsert(head,i,e);print(head);break;case2://在单链表中删除数据元素printf("输入需要删除的元素的位置:");scanf("%d",&i);head=ListDelete(head,i,e);print(head);break;case0://结束程序printf("已结束程序!!!\n");break;default:printf("输入有误!!!\n");}}while(m!=0);}运行结果(包括程序如何使用,输入数据和输出结果)(1)单链表的创建 (2)单链表的插入(3)单链表的删除(4)结束程序(5)如果单链表的操作有误的话,程序会提示操作有误。三、实验结果与讨论:注:1、实验小结应包含实验所需知识点和实验方法的总结,实验心得体会等。2、分组实验需包含同组讨论内容。有了上次做顺序表的基本操作与实现这个实验的基础,这次实验相比上次感觉做的更加顺手,由于单链表和顺序表知识是相关联的,所以我根据做上次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡镇卫生院护士长管理计划
- 2025年中考语文复习策略与计划
- 眼科医院感染防控培训计划
- 亲属合伙购房协议书范本
- 课题申报书:高校学风建设研究
- 课题申报书:高校人事人才与教师发展体制机制研究
- 室内房屋装修装饰合同
- 装修改造工程施工合同书
- 数学思维训练计划实施
- 食品加工行业设备管理与人力资源计划
- 2024年海南省烟草专卖局招聘考试真题
- 电炉炼钢工职业技能知识考试题库
- 2025年湖北汉江金融服务中心有限公司招聘笔试参考题库含答案解析
- 肿瘤内科临床路径
- 2025年中国中车集团招聘笔试参考题库含答案解析
- 中国高血压防治指南(2024年修订版)解读课件
- 住建局条文解读新规JGJT46-2024《施工现场临时用电安全技术标准》
- 公路工程标准施工招标文件(2018年版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 勤奋与懒惰小学心理健康课教案——告别懒惰.doc
- 消费者权益保护法培训课件
评论
0/150
提交评论