版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三 线性表的链式存储【实验目的】1. 掌握基本线性链式存储的类型定义及C语言实现;2. 掌握基本线性表在链式存储结构中的各种基本操作。【实验要求】1. 学会定义一个链式存储结构体 LNode;2. 学会链式存储结构的初始化、清空、求线性表的长度、遍历、改值、 插入(头插、尾插、固定位置插入)、删除(删头、删尾、固定位置删除) ;3. 学会用 main 函数调用定义的各个函数;【实验环境】VC+运行的环境【实验步骤及代码 】一、创建VC工程环境二、编写、调试程序/一、包含库文件和类型定义#include #include typedef charElemType;/二、定义结构typedef
2、 struct LNodeElemType data;struct LNode *next;LNode,* LinkList ;/三、基本操作函数的定义/(1)创建一个带头结点的链表LinkList CreateList_L(int n)逆序输入如n个元素的值,建立一个带表头结点的单链表LinkList L=( LinkList )malloc(sizeof(LNode);L-next=NULL;char ch;for(int i=n;i0;-i)LinkList p=(LinkList )malloc(sizeof(LNode); scanf(%c,&ch); p-data=ch;p-nex
3、t=L-next; L-next=p;return L; /(2)链表的遍历函数 void travel_L( LinkList s)LinkList p=s-next;while(p) printf(%c,p-data); p=p-next;printf(n);返回链表L的第i个元素的值ElemType GetElem_L(LinkList L,int i)LNode *p=L-next;int j=1;while (p&jnext; +j;if (!p|ji) printf(i 越界! );exit(1);else return p-data;(4)链表的i个位置插入一个值为e的节点voi
4、d ListInsert_L(LinkList L,int i, ElemType e)LinkList p=L;int j=0;while (p&jnext; +j;if (!p|ji-1) exit(1);elseLNode *s=(LinkList )malloc(sizeof(LNode); s-data=e;s-next=p-next;p-next=s;return;/(5)链表中删除第 i 个元素void ListDelete_L( LinkList L,int i)LNode *p=L;int j=0;while (p-next&jnext;+j;if(!(p-next)|ji-
5、1) exit(1);LNode *q=p-next;p-next=q-next;free(q);return;/(6)删除链表的第一个节点void ListDeleteFist_L( LinkList L)ListDelete_L(L,1);/(7)求一个链表的长度int ListLength_L( LinkList L)LNode *p=L;int j=0;while (p-next) p=p-next;+j;return j;(8)在一个链表的尾部查入一个值为e的节点void ListInsertLast_L( LinkList L,ElemType e) ListInsert_L(L,
6、ListLength_L(L)+1,e);/(9)删除链表的尾节点void ListDeleteLast_L(LinkList L) ListDelete_L(L,ListLength_L(L);(10)把链表的第i个值改为evoid Listchange(LinkList L,int i, ElemType e)LNode *p=L;int j=0;while (p-next&jnext;+j;if(!(p-next)|ji) exit(1);p-data=e;return;(11)链表中找值为e的节点的位置int ListFind( LinkList L, ElemType e)LNode
7、 *p=L;int j=0;while (p-next&(p-data!=e) p=p-next;+j;if(!(p-next)|jListLength_L(L) exit(1);elsereturn j;/(12)清空一个链表void ListClear_L(LinkList L)while (L-next) ListDeleteLast_L(L);/四、主调函数void main()LinkList L=CreateList_L(6); travel_L(L);printf(链表的第2个元素是:); printf(%cn,GetElem_L(L,2);printf(链表的第2个位置插入值为
8、w后的链表:);ListInsert_L(L,2,w);travel_L(L);printf( 删除链表的第 2个位置上的节点后的链表: ); ListDelete_L(L,2);travel_L(L);printf( 删除链表的头节点后的链表: );ListDeleteFist_L(L);travel_L(L);printf(n);printf( 当前链表的长度为: ); printf(%d,ListLength_L(L); printf(n);printf(链表的尾部插入z后:);ListInsertLast_L(L,z);travel_L(L);printf(n);printf( 删除链
9、表的尾节点后: );ListDeleteLast_L(L);travel_L(L);printf(n);printf(把第二个节点的值改为丫后:);Listchange(L,2,Y);travel_L(L);printf(n);printf(找链表中值为丫的位置:); prin tf(%d丄 istFi nd(L,Y);printf(n);printf(清空链表:);ListClear_L(L);travel_L(L);printf(n);【实验结果】输入abcdef六个元素时的运行结果:CA *E:教学数据结构3实鲨程序LinkListDe可Xabcdeffedcba勺寰2个元案是:e勺第2个位置插入值为讨后的链表:fw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年办公环境安全风险防控指南
- 2026河南周口市市直机关遴选公务员22人备考题库及答案详解(考点梳理)
- 中国核电2026届校园招聘备考题库有完整答案详解
- 2026湖北郴州莽山旅游开发有限责任公司招聘9人备考题库及答案详解一套
- 蓝色唯美花朵年终总结(3篇)
- 职业医学与预防体检融合模式
- 职业卫生标准落地的志愿者宣教方案
- 职业健康行为对医疗员工组织承诺的正向影响
- 职业健康监护与员工职业发展阶梯式晋升模型
- 职业健康促进的卫生经济学应用
- 2026云南昆明市公共交通有限责任公司总部职能部门员工遴选48人笔试模拟试题及答案解析
- 2025至2030中国数字经济产业发展现状及未来趋势分析报告
- 上海市松江区2025-2026学年八年级(上)期末化学试卷(含答案)
- 导管室护理新技术
- 中国信通服务:2025算力运维体系技术白皮书
- 2026年焦作大学单招试题附答案
- 电力行业五新技术知识点梳理
- 《DLT 849.1-2004电力设备专用测试仪器通 用技术条件 第1部分:电缆故障闪测仪》专题研究报告 深度
- 福建省漳州市2024-2025学年八年级上学期期末考试数学试卷(北师大版A卷)(含详解)
- 通风空调系统联动调试实施方案
- 2025中国电信股份有限公司重庆分公司社会成熟人才招聘考试笔试备考试题及答案解析
评论
0/150
提交评论