- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二_线性链表_09082229刘增鹏
实验2 线性链表
一、实验的目的要求
了解线性表的特性,以及它们在实际问题中的应用。
掌握链表建立及逆置的实现方法及它们的基本操作。
二、题目、线性链表的操作。
设计一个完整的线性链表操作软件系统,对线性链表实现在表中查找数据;在表中插入数据;两个线性链表的连接等操作。可以使用不带表头的也可以使用带表头的,可以对单链表操作也可以对双向链表操作,还可以对单或双向循环链表进行操作。你还可以根据自己的想法做一些其它的操作。但至少在这个程序系统中包含三个以上的操作。
三、算法描述
插入:要在带头结点的单链表L中第i个数据元素之前插入一个数据元素e,需要首先在单链表中找到第i-1个结点并由指针pre指示,然后申请一个新的结点并由指针s指示,其数据域的值为e,并修改第i-1个结点的指针使其指向s,然后使s结点的指针域指向第i个结点。
删除:欲在带头结点的单链表L中删除第i个结点,则首先要通过计数方式找到第i-1个结点并使p指向第i-1个结点,而后删除第i个结点并释放结点空间。
查找:按值查找是指在单链表中查找是否有结点值等于e的结点,若有的话,则返回首次找到的其值为e的结点的存储位置,否则返回NULL。查找过程从单链表的头指针指向的头结点出发,顺着链逐个将结点的值和给定值e作比较。
逆置:只要将原表头结点指向表尾,并将每个结点的指针域修改一下,它指向其前一个结点。
四、程序清单
#includestdio.h
#includestdlib.h
#includestring.h
#define null 0
typedef char ElemType;
typedef struct Lnode
{ ElemType data[20];
struct Lnode *next;
}Lnode;
Lnode *L;
Lnode h;
Lnode *creat_L();
void prin(int A);
void print(int B);
void out_L(Lnode *L);
int sss(Lnode *L);
void insert_L(Lnode *L,int i,ElemType a[20]);
int clear_L(Lnode *L);
ElemType delete_L(Lnode *L,int i);
int locat_L(Lnode *L,ElemType a[20]);
void main()
{ int i,k,loc,l,A,B;
ElemType a[20],b[20];
prin(A);
printf( 1.建立数据\n 输入0结束\n);
do{
print(B);
scanf(%d,k);
switch(k)
{
case 0: break;
case 1:
{ L=creat_L();
out_L(L);
}break;
case 2:
{ printf(请输入插入位置:);
scanf(%d,i);
printf(请输入要插入的数据:);
scanf(%s,a);
i=i-1;
insert_L(L,i,a);
out_L(L);
}break;
case 3:
{ printf(输入要删除数据的位置:);
scanf(%d,i); b[20]=delete_L(L,i);
out_L(L);
}break;
case 4:
{ printf(输入要查找的数据:);
scanf(%s,b);
loc=locat_L(L,b);
if(loc==-1)
printf(未找到指定数据!\n);
else
printf(已找到数据的位置是 %d\n,loc);
}break;
case 5:
{ sss(L);
printf(逆置的结果如下\n);
out_L(L);
} break;
case 6:
{ loc=clear_L(L);
if(loc==1)
printf(清除成功\n);
else
您可能关注的文档
最近下载
- 高中数学人教A版(2019)选择性必修第一册知识点归纳含答案.pdf VIP
- 农村污水治理工程施工方案与技术措施.pdf VIP
- 关于马克思主义环境法思想探究.doc VIP
- 越众集团2012年招聘简章.doc VIP
- 酒店装修施工组织设计.doc VIP
- 半导体光电子器件全套教学课件.pptx
- 日语初级~阅读理解.pdf VIP
- 人教版九年级数学第二十四章《圆》单元知识点总结.doc VIP
- 2022-2028全球及中国化学水处理设备行业研究及十四五规划分析报告.docx VIP
- CISSP Official (ISC)2 Practice Tests英文(第3版)考试认证文档p.pdf VIP
文档评论(0)