- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一 线性表的基操作实现及其应用
实验一 线性表的基本操作实现及其应用一、实验目的1、熟练掌握线性表的基本操作在两种存储结构上的实现,其中以熟悉各种链表的操作为重点。2、巩固高级语言程序设计方法与技术,会用线性链表解决简单的实际问题。二、实验内容√ 1、单链表的表示与操作实现 * 2、约瑟夫环问题3、Dr.Kong的艺术品 三、实验要求1、按照数据结构实验任务书,提前做好实验预习与准备工作。2、加“*”题目必做,其他题目任选;多选者并且保质保量完成适当加分。3、严格按照数据结构实验报告模板和规范,及时完成实验报告。 四、实验步骤(说明:依据实验内容分别说明实验程序中用到的数据类型的定义、主程序的流程以及每个操作(函数)的伪码算法、函数实现、程序编码、调试与分析 附流程图与主要代码)
#define MAXSIZE 100
2、单链表的结点类型定义
/* 定义elemtype为int类型 */
typedef int elemtype;
/* 单链表的结点类型 */
typedef struct STD elemtype elem; STD *next;
list, * linklist;
3、初始化单链表
/* 函数功能:对链表进行初始化
参数:链表 linklist L
成功初始化返回1,否则返回0 */
int init linklist L L linklist malloc sizeof list ;//头结点申请内存。
if !L //判断有无申请到空间。
return 0; //没有申请到内存,参数失败返回0
L- next NULL;
L- elem 0; //单链表中有多少元素 return 1; //成功参数返回1 4、清空单链表
/* 函数功能:把链表清空
参数:链表 linklist L
成功清空链表返回1 */
int makeempty linklist L linklist p,q;
p L- next;
while p //当p非空时,删除p q p; p p- next; free q ; L- next NULL; //只剩头指针,所以L- next NULL
L- elem 0; //清空后链表中元素为0
return 1; //清空后返回1 5、求链表长度
/* 函数功能:返回链表的长度
参数;链表 linklist L
函数返回链表的长度 */
int getlength linklist L linklist p; p L- next; int j 0; while p j++; //统计链表中元素 p p- next; return j; //最后返回链表长度. 6、判断链表是否为空
/* 函数功能:判断链表是否为空
参数;链表 linklist L
链表为空时返回0,不为空返回1 */
int isempty linklist L if L- next //头结点后有元素表示链表不空则返回1 return 1; else return 0; //头结点后没有元素表示链表不空则返回0 7、检查链表是否为满
/* 函数功能:判断链表是否为满
参数;链表 linklist L
链表为满时返回0,不为满返回1 */
int isfull linklist L if L- elem MAXSIZE //头结点的elem储存的为链表的长度。 return 1; //其小于MAXSIZE表示链表不满 else return 0; //否则返回0 8、遍历链表
/* 函数功能:遍历链表,输出每个节点的elem值
参数;链表 linklist L
通过循环逐个输出节点的elem值 */
void show linklist L linklist p; p L- next; if isempty L 0 //当链表为空时则输出链表为空 cout 链表为空!; while p //当链表为不空时则输出链表每个节点的elem值 cout p- elem ; p p- next; cout endl; 9、从链表中查找元素
/* 函数功能: 从链表中查找有无给定元素
参数;链表 linklist L ,给定元素 int i
如果链表中有给定元素 i 则返回1,否则返回0 */
int find linklist L, int i linklist p; p L- next; while p if p- elem i //判断有无元素I,有返回1 return 1; p p- next; return 0; //没有找到返回0 10、从链表中查找与给定元素值相同的元素在表中的位置
/* 函数功能: 从链表中查找给定元素的位置
参
文档评论(0)