实验1_链表的操作实验.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验1_链表的操作实验

实验B01: 链表的操作实验一、实验名称和性质所属课程数据结构实验名称链表的操作实验学时2实验性质□验证 □综合 √设计必做/选做√必做 □选做二、实验目的1.掌握线性表的链式存储结构的表示和实现方法。2.掌握链表基本操作的算法实现。三、实验内容1.建立单链表,并在单链表上实现插入、删除和查找操作(验证性内容)。2.建立双向链表,并在双向链表上实现插入、删除和查找操作(设计性内容)。3.计算已知一个单链表中数据域值为一个指定值x的结点个数(应用性设计内容)。四、实验的软硬件环境要求硬件环境要求:PC机(单机)使用的软件名称、版本号以及模块:Windows环境下的TurboC2.0以上或VC++ 等。五、知识准备前期要求熟练掌握了C语言的编程规则、方法和单链表和双向链表的基本操作算法。六、验证性实验1.实验要求编程实现如下功能:(1)根据输入的一系列整数,以0标志结束,用头插法建立单链表,并输出单链表中各元素值,观察输入的内容与输出的内容是否一致。(2)在单链表的第i个元素之前插入一个值为x的元素,并输出插入后的单链表中各元素值。(3)删除单链表中第i个元素,并输出删除后的单链表中各元素值。(4)在单链表中查找第i个元素,如果查找成功,则显示该元素的值,否则显示该元素不存在。2. 实验相关原理:线性表的链式储结构是用一组任意的存储单元依次存放线性表中的元素,这组存储单元可以是连续的,也可以是不连续的。为反映出各元素在线性表中的前后逻辑关系,对每个数据元素来说,除了存储其本身数据值之外,还需增加一个或多个指针域,每个指针域的值称为指针,又称作链,它用来指示它在线性表中的前驱或后继的存储地址。这两个部分的的一起组成一个数据元素的存储映像,称为结点,若干个结点链接成链表。如果一个结点中只含一个指针的链表,则称单链表。单链表的存储结构描述如下:typedef struct Lnode {Elemtype data;/*数据域*/ struct Lnode *next;/*指针域*/}LNODE,*Linklist; /*其中LNODE为结点类型名,Linklist为指向结点的指针类型名*/【核心算法提示】链表建立操作的基本步骤:链表是一个动态的结构,它不需要予分配空间,因此建立链表的过程是一个结点“逐个插入” 的过程。先建立一个只含头结点的空单链表,然后依次生成新结点,再不断地将其插入到链表的头部或尾部,分别称其为“头插法”和“尾插法”。链表查找操作的基本步骤:因链表是一种顺序存取的结构,则要在带头结点的链表中查找到第 i个 元素,必须从头结点开始沿着后继指针依次点数,直到点到第 i 个结点为止,如果查找成功,则用e返回第i个元素值。头结点可看成是第0个结点。链表插入操作的基本步骤:先确定要插入的位置,如果插入位置合法,则再生成新的结点,最后通过修改链将新结点插入到指定的位置上。链表删除操作的基本步骤:先确定要删除的结点位置,如果位置合法,则再通过修改链使被删结点从链表中“卸下”,最后释放被删结点的空间。 【核心算法描述】void creat1(Linklist L) /*输入一系列整数,以0标志结束,将这些整数作为data域并用头插法建立一个带头结点的单链表的函数*/{L=(Linklist)malloc(sizeof(LNODE));/*生成头结点*/ L-next=NULL;/*头结点的指针域初始为空*/ scanf(%d,node);while(node!=0) { p=(Linklist)malloc(sizeof(LNODE));/*为一个新结点的分配空间*/ p-data=node; /*为新结点数据域赋值*/ p-next=L-next;/*新结点指针域指向开始结点*/ L-next=p; /*头结点指针域指向新结点,即新结点成为开始结点*/scanf(%d,node);}}void creat2(Linklist L) /*输入一系列整数,以0标志结束,将这些整数作为data域并用尾插法建立一个带头结点的单链表的函数*/ {L=(Linklist)malloc(sizeof(LNODE));/*为头结点分配空间*/ L-next=NULL; /*头结点的指针域初始为空*/ r=L; /*尾指针初始指向头结点*/scanf(%d,node);while(node!=0) { p=(Linklist)malloc(sizeof(LNODE));/*为一个新结点分配空间*/ p-data=node; /*新结点数据域赋值*/ p-next=NULL; /*新结点指针域为空*/ r-next=p;/*尾结点指针域指向新结点*/ r=p; /*尾指针指向新结点,即新结点成为尾结点*/scanf(%d,node);

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档