已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 链表的建立及基本操作方法实现一、【实验目的】1、理解和掌握单链表的类型定义方法和结点生成方法。2、掌握利用头插法和尾插法建立单链表和显示单链表元素的算法。3、掌握单链表的查找(按序号)算法。4、掌握单链表的插入、删除算法。二、【实验内容】1、利用头插法和尾插法建立一个无头结点单链表,并从屏幕显示单链表元素列表。2、利用头插法和尾插法建立一个有头结点单链表,并从屏幕显示单链表元素列表。3、将测试数据结果用截图的方式粘贴在程序代码后面。重点和难点:尾插法和头插法建立单链表的区别。建立带头结点和无头结点单链表的区别。带头结点和无头结点单链表元素显示方法的区别三、【算法思想】1) 利用头插法和尾插法建立一个无头结点单链表链表无头结点,则在创建链表时,初始化链表指针L=NULL。当用头插法插入元素时,首先要判断头指针是否为空,若为空,则直接将新结点赋给L,新结点next指向空,即L=p,p-next=NULL,若表中已经有元素了,则将新结点的next指向首结点,然后将新结点赋给L即(p-next=L,L=p)。当用尾插法插入元素时,首先设置一个尾指针tailPointer以便随时指向最后一个结点,初始化tailPointer和头指针一样即tailPointer=L。插入元素时,首先判断链表是否为空,若为空,则直接将新结点赋给L即L=p,若不为空,else将最后一个元素的next指向新结点即tailPointer-next=p,然后跳出这个if,else语句,将新结点next指向空,并且将tailPointer指向新结点即p-next=NULL,tailPointer=p。2) 利用头插法和尾插法建立一个有头结点单链表链表有头结点,则在创建链表时,初始化链表指针L-next = NULL。与无头结点区别在于,判断链表为空是根据L-next是否为空。用头插法插入元素时,要判断链表是否为空,若为空则将新结点next指向空,作为表尾,若不为空,则直接插入,将新结点next指向头结点next的指向,再将头结点next指向新结点即p-next=L-next,L-next=p。用尾插法插入元素时,首先也要设置一个尾指针tailPointer以便随时指向最后一个结点,初始化tailPointer=L,与无头结点区别就只是插入第一个元素时有区别。插入元素时,不需要判断链表是否为空,直接进行插入,代码tailPointer-next=p,p-next=NULL,tailPointer=p。3)带头结点和无头结点单链表元素显示方法的区别:区别在于,显示时带头结点是从头结点next开始即p=L-next,而无头结点链表是直接从L开始即p=L。四、【源程序代码】1) 利用头插法和尾插法建立一个无头结点单链表#include#include#include typedef struct LNode int data; struct LNode *next;LNode, *LinkList;/* 尾插法 */void creatListTailInsert(LinkList &L, int n) LinkList p, tailPointer; int i;/计数 L = (LinkList)malloc(sizeof(LNode); if(!L) exit(0); /分配空间失败则退出程序 L = NULL; /no headcrunode tailPointer = L; /把尾赋给尾指针 printf(taillist(%d):,n); for(i = 0;i data); if(L = NULL) L = p; /当链表为空,L赋给第一个结点 else tailPointer-next = p; /将新结点插入尾部; p-next = NULL; tailPointer = p; /插入的结点变为尾结点 /* 头插法 */void creatListHeadInsert(LinkList &L, int n) LinkList p; int i;/计数 L = (LinkList)malloc(sizeof(LNode); if(!L) exit(0); /分配空间失败则退出程序 L = NULL; /no headcrunode printf(headlist(%d):,n); for(i = 0;i data); if(L != NULL) p-next = L; else p-next = NULL; L = p; /将头结点 next指向赋给新结点 /* 依次显示表中所有元素 */void getAllElem(LinkList &L, int n) LinkList p; int i = 0; p = L; while(p & i data); p = p-next; i+; printf(n);void main() LinkList headList; LinkList tailList; int count; /插入元素个数 printf(count=); scanf(%d,&count); creatListHeadInsert(headList, count); creatListTailInsert(tailList, count); printf(headList:); getAllElem(headList, count); printf(tailList:); getAllElem(tailList, count);2) 利用头插法和尾插法建立一个有头结点单链表#include#include#include typedef struct LNode int data; struct LNode *next;LNode, *LinkList;/* 尾插法 */void creatListTailInsert(LinkList &L, int n) LinkList p, tailPointer; int i;/计数 L = (LinkList)malloc(sizeof(LNode); if(!L) exit(0); /分配空间失败则退出程序 L-next = NULL; /headcrunode tailPointer = L; /把尾赋给尾指针 printf(taillist(%d):,n); for(i = 0;i data); p-next = tailPointer-next; tailPointer-next = p; tailPointer = p; /插入的结点变为尾结点 /* 头插法 */void creatListHeadInsert(LinkList &L, int n) LinkList p; int i;/计数 L = (LinkList)malloc(sizeof(LNode); if(!L) exit(0); /分配空间失败则退出程序 L-next = NULL; /headcrunode printf(headlist(%d):,n); for(i = 0;i data); p-next = L-next; /将头结点 next指向赋给新结点 L-next = p; /* 依次显示表中所有元素 */void getAllElem(LinkList &L, int n) LinkList p; int i = 0; p = L-next; while(p & i data); p = p-next; i+; printf(n);void main() LinkList headList; LinkList tailList; int count; /插入元素个数 printf(count=); scanf(%d,&count); creatListHeadInsert(headList, count); creatListTailInsert(tailList, count); printf(headList:); getAllElem(headList, count); printf(tailList:); ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 男子争抚养权被妻弟捅死案二审开庭
- 珠海科技学院《风景园林规划设计》2025-2026学年第一学期期末试卷
- 山东外事职业大学《电工电子实训》2025-2026学年第一学期期末试卷
- 武汉长江新区招聘社区专职工作人员考试真题2024
- 2025年南通市海门区事业单位考试真题
- 浙江农林大学《信息安全专业英语》2025-2026学年第一学期期末试卷
- 如何准备面向管理层的哲学职业发展面试
- 学生干部竞选面试技巧指导
- 扶贫项目岗产业扶贫项目可行性分析
- 工程建筑技术与安全操作规范指南
- 派遣岗位薪酬管理办法
- DBJ50-T-200-2024 建筑桩基础技术标准
- 手动葫芦吊装施工方案1
- 精馏塔课件完整版本
- 办公耗材应急方案(3篇)
- 仓库出入库培训
- 26《西门豹治邺》 公开课一等奖创新教学设计
- JJF 2214-2025 机动车检测用气象单元校准规范
- 使用YOLOv8s技术进行锂电池射线缺陷检测的研究
- 高中音乐考试试题及答案
- 丑小鸭儿童故事绘本课件
评论
0/150
提交评论