实验1_链表的操作实验

实验1_链表的操作实验

ID:46405501

大小:38.21 KB

页数:10页

时间:2019-11-23

实验1_链表的操作实验_第1页
实验1_链表的操作实验_第2页
实验1_链表的操作实验_第3页
实验1_链表的操作实验_第4页
实验1_链表的操作实验_第5页
资源描述:

《实验1_链表的操作实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验B01:链表的操作实验一、实验名称和性质所属课程数据结构实验名称链表的操作实验学时2实验性质□验证□综合√设计必做/选做√必做□选做二、实验目的1.掌握线性表的链式存储结构的表示和实现方法。2.掌握链表基本操作的算法实现。三、实验内容1.建立单链表,并在单链表上实现插入、删除和查找操作(验证性内容)。2.建立双向链表,并在双向链表上实现插入、删除和查找操作(设计性内容)。3.计算已知一个单链表中数据域值为一个指定值x的结点个数(应用性设计内容)。四、实验的软硬件环境要求硬件环境要求:PC机(单机)使用的软件名称、版本号以及模块:Windows环境下的TurboC2.0以上或VC++等

2、。五、知识准备前期要求熟练掌握了C语言的编程规则、方法和单链表和双向链表的基本操作算法。六、验证性实验1.实验要求编程实现如下功能:(1)根据输入的一系列整数,以0标志结束,用头插法建立单链表,并输出单链表中各元素值,观察输入的内容与输出的内容是否一致。(2)在单链表的第i个元素之前插入一个值为x的元素,并输出插入后的单链表中各元素值。(3)删除单链表中第i个元素,并输出删除后的单链表中各元素值。(4)在单链表中查找第i个元素,如果查找成功,则显示该元素的值,否则显示该元素不存在。2.实验相关原理:线性表的链式储结构是用一组任意的存储单元依次存放线性表中的元素,这组存储单元可以是连续的,

3、也可以是不连续的。为反映出各元素在线性表中的前后逻辑关系,对每个数据元素来说,除了存储其本身数据值之外,还需增加一个或多个指针域,每个指针域的值称为指针,又称作链,它用来指示它在线性表中的前驱或后继的存储地址。这两个部分的的一起组成一个数据元素的存储映像,称为结点,若干个结点链接成链表。如果一个结点中只含一个指针的链表,则称单链表。单链表的存储结构描述如下:typedefstructLnode{Elemtypedata;/*数据域*/structLnode*next;/*指针域*/}LNODE,*Linklist;/*其中LNODE为结点类型名,Linklist为指向结点的指针类型名*/

4、【核心算法提示】1.链表建立操作的基本步骤:链表是一个动态的结构,它不需要予分配空间,因此建立链表的过程是一个结点“逐个插入”的过程。先建立一个只含头结点的空单链表,然后依次生成新结点,再不断地将其插入到链表的头部或尾部,分别称其为“头插法”和“尾插法”。2.链表查找操作的基本步骤:因链表是一种"顺序存取"的结构,则要在带头结点的链表中查找到第i个元素,必须从头结点开始沿着后继指针依次"点数",直到点到第i个结点为止,如果查找成功,则用e返回第i个元素值。头结点可看成是第0个结点。3.链表插入操作的基本步骤:先确定要插入的位置,如果插入位置合法,则再生成新的结点,最后通过修改链将新结点插

5、入到指定的位置上。4.链表删除操作的基本步骤:先确定要删除的结点位置,如果位置合法,则再通过修改链使被删结点从链表中“卸下”,最后释放被删结点的空间。【核心算法描述】voidcreat1(Linklist&L)/*输入一系列整数,以0标志结束,将这些整数作为data域并用头插法建立一个带头结点的单链表的函数*/{L=(Linklist)malloc(sizeof(LNODE));/*生成头结点*/L->next=NULL;/*头结点的指针域初始为空*/scanf("%d",&node);while(node!=0){p=(Linklist)malloc(sizeof(LNODE));/*

6、为一个新结点的分配空间*/p->data=node;/*为新结点数据域赋值*/p->next=L->next;/*新结点指针域指向开始结点*/L->next=p;/*头结点指针域指向新结点,即新结点成为开始结点*/scanf("%d",&node);}}voidcreat2(Linklist&L)/*输入一系列整数,以0标志结束,将这些整数作为data域并用尾插法建立一个带头结点的单链表的函数*/{L=(Linklist)malloc(sizeof(LNODE));/*为头结点分配空间*/L->next=NULL;/*头结点的指针域初始为空*/r=L;/*尾指针初始指向头结点*/scan

7、f("%d",&node);while(node!=0){p=(Linklist)malloc(sizeof(LNODE));/*为一个新结点分配空间*/p->data=node;/*新结点数据域赋值*/p->next=NULL;/*新结点指针域为空*/r->next=p;/*尾结点指针域指向新结点*/r=p;/*尾指针指向新结点,即新结点成为尾结点*/scanf("%d",&node);}}statuslist_search(Li

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。