版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一链表的建立及基本操作方法实现一、【实验目的】1、理解和掌握单链表的类型定义方法和结点生成方法。2、掌握利用头插法和尾插法建立单链表和显示单链表元素的算法。3、掌握单链表的查找(按序号)算法。4、掌握单链表的插入、删除算法。二、【实验内容】1、利用头插法和尾插法建立一个无头结点单链表,并从屏幕显示单链表元素列表。2、利用头插法和尾插法建立一个有头结点单链表,并从屏幕显示单链表元素列表。3、将测试数据结果用截图的方式粘贴在程序代码后面。重点和难点:1)尾插法和头插法建立单链表的区别。2)建立带头结点和无头结点单链表的区别。3)带头结点和无头结点单链表元素显示方法的区别三、【算法思想】1)利用
2、头插法和尾插法建立一个无头结点单链表链表无头结点,则在创建链表时,初始化链表指针L=NULLo当用头插法插入元素时,首先要判断头指针是否为空,若为空,则直接将新结点赋给L,新结点next指向空,即L=p.p-next=NULL,若表中已经有元素了,则将新结点的next指向首结点,然后将新结点赋给L即(p-next=L,L=p)。当用尾插法插入元素时,首先设置一个尾指针tailPointer以便随时指向最后一个结点,初始化tailPointer和头指针一样即tailPointei-=Lo插入元素时,首先判断链表是否为空,若为空,则直接将新结点赋给L即L=p,若不为空,else将最后一个元素的ne
3、xt指向新结点即tailPointei-next=p,然后跳出这个if,else语句,将新结点next指向空,并且将tailPomter指向新结点即p-next=NULL,tailPomtei-p。2)利用头插法和尾插法建立一个有头结点单链表链表有头结点,则在创建链表时,初始化链表指针L-next=NULL。与无头结点区别在于,判断链表为空是根据L-next是否为空。用头插法插入元素时,要判断链表是否为空,若为空则将新结点next指向空,作为表尾,若不为空,则直接插入,将新结点next指向头结点next的指向,再将头结点next指向新结点即p-next=L-next,L-next=p。用尾插法
4、插入元素时,首先也要设置一个尾指针tadPomter以便随时指向最后一个结点,初始化tadPomtei-=L,与无头结点区别就只是插入第一个元素时有区别。插入元素时,不需要判断链表是否为空,直接进行插入,代码tailPomter-next=p,p-next=NULL,tailPointei-pc.带头结点和无头结点单链表元素显示方法的区别:区别在于,显示时带头结点是从头结点next开始即p=L-next,而无头结点链表是直接从L开始即p=Lo四、【源程序代码】1)利用头插法和尾插法建立一个无头结点单链表iiicludeiiicludetvpedefstmctLNodeintdata;struc
5、tLNode*next;LNode,*LinkList;/*尾插法*/voidcreatListTailInsert(LuikList&L、mtn)LinkListp.tailPointer;mti;/计数L=(LuikList)malloc(sizeof(LNode);if(!L)exit(O);分配空间失败则退出程序L=NULL;/noheadcmnodetailPomter=L;把尾赋给尾指针fbr(i=0;idata);if(L=NULL)L=p;当链表为空,L赋给第一个结点elsetailPomter-next=p;将新结点插入尾部;p-next=NULL;tailPomter=p;
6、/Ji入的结点变为尾结点/*头插法*/voidcreatListHeadInseit(LmkList&L,iiitn)LinkListp;mti;/计数L=(LuikList)malloc(sizeof(LNode);if(!L)exigO);分配空间失败则退出程序L=NULL;/noheadcmnodeprintf(,headlist(%d):,n);fbr(i=0;idata);if(L!=NULL)p-next=L;elsep-next=NULL;L=p;将头结点MXt指向赋给新结点/*依次显示表中所有元素*/voidgetAllElem(LinkList&L、intn)LinkList
7、p;mti=0;P=L;wliile(p&ivn)p-data);p=p-next;i+;prmtf(”n”);voidmain()LinkListheadList;LinkListtailList;mtcount;插入元素个数pnntf(Hcount=H);scanf(H%d,&count);creatListHeadIiiseit(headList,count);creatListTailhisen(tailList,count);pnntf(MheadList:H);getAllElem(headList,count);pnntf(MtailList:H);getAllElem(tail
8、List,count);2)利用头插法和尾插法建立一个有头结点单链表ftincludeftincludetypedefstructLNodeintdata;structLNode*next;LNode,LinkList;/*尾插法*/voidcreatListTaillnsert(LinkList&L,intn)LinkListp,tailPointer;inti;/计数L=(LinkList)malloc(sizeof(LNode);if(!L)exit(O);/分配空间失败则退出程序L-next二NULL;/headcrunodetailPointer=L;把尾赋给尾指针printf(ta
9、illist(%d):,n);for(i=0;idata);p-next二tailPointer-next;tailPointer-next二p;tailPointer=p;/插入的结点变为尾结点/*头插法*/voidcreatListHeadlnsert(LinkList&L,intn)LinkListp;inti;/计数L=(LinkList)malloc(sizeof(LNode);if(!L)exit(0);/分配空间失败则退出程序L-next二NULL;/headcrunodeprintf(headlist(%d)n);for(i=0;inext=L-next;/将头结点next指向
10、赋给新结点Lnext=p;依次显示表中所有元素*/voidgetAllElem(LinkList&L,intn)LinkListp;inti=0;p=Lnext;while(p&idata);p=p-next;i+;printfCn,z);voidmain()LinkListheadList;LinkListtailList;intcount:/插入元素个数printf(count二);scanf&count);creatListHeadlnsert(headList,count);creatListTaillnsert(tailList,count);printf(headList:“);getAllElem(headList,count);printf(tailList:);getAllElem(tailList,count);五、【数据测试】输入:8插入8个元素输入八个数字头插法和尾插法区别在于,头插法输入数据是逆序存入,尾插法是顺序存入:带头结点和不带头结点在数据显示上基本没区别,区别在于初始化链表和插入元素时,头指针的操作不同。1)利用头插法和尾插法建立一个无头结点单链表9292cret-AllEleiaiheadLisiscounts):c:*MC:C-Free3.5UempDa-taExper
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑材料进口物流合同样本
- 矿产开采用地中介服务合同
- 二零二五年度包装机械远程监控与维修服务合同
- 家禽养殖合同禽类采购合同
- 房屋买卖合同详情
- 农业工程综合实施方案
- 软件技术服务合同书
- 国际酒店服务管理手册
- 工程监理规范实务手册
- 牛羊肉供货协议书
- 2025年中国东方电气集团有限公司招聘笔试参考题库含答案解析
- 充电桩知识培训课件
- 模具检测知识培训
- 2025年七年级下册道德与法治主要知识点
- 第25章 概率初步(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 2025年交通运输部长江口航道管理局招聘4人历年高频重点提升(共500题)附带答案详解
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读
- 广东省广州市2025届高三上学期12月调研测试(零模)英语 含解析
- 偏瘫足内翻的治疗
- 兰溪市排水防涝提升雨污管网修复改造初步设计文本
- 2024-2030年中国永磁电机市场现状分析及前景趋势预测报告
评论
0/150
提交评论