- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现单链表中的各种算法运算.
实验一:实现单链表各种基本运算的算法
实验目的
掌握单链表存储结构的类型定义;
实现单链表各种基本运算的算法。
实验环境
Windows操作系统;
Visual C++ 6.0
实验内容
实现单链表各种基本运算的算法。
概要设计
存储结构的类型定义:
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LinkList;
单链表示意图:
项目组成图:
4、algo2_2.cpp的程序文件包含的函数原型及功能:
InitList(LinkList *L) 初始化单链表L
DestroyList(LinkList *L) 释放单链表L
ListEmpty(LinkList *L)判断单链表L是否为空表
ListLength(LinkList *L)返回单链表L的元素个数
DispList(LinkList *L)输出单链表L
GetElem(LinkList *L,int i,ElemType e)获取单链表L的第i个元素
LocateElem(LinkList *L,ElemType e)在单链表L中查找元素e
ListInsert(LinkList *L,int i,ElemType e)在单链表L中的第i个位置上插入元素e
ListDelete(LinkList *L,int i,ElemType e)在单链表L中删除第i个元素
exp2_2.cpp程序文件简介:
(1)初始化单链表h: InitList(h);
(2)依次采用尾插法插入a,b,c,d,e元素:
ListInsert(h,1,a);
ListInsert(h,2,b);
ListInsert(h,3,c);
ListInsert(h,4,d);
ListInsert(h,5,e);
(3)输出单链表h: DispList(h);
(4)单链表h长度:ListLength(h)
(5)判断单链表h 是否为空:ListEmpty(h)?空:非空
(6)查找单链表h的第3个元素:GetElem(h,3,e);
(7)查找元素f的位置:LocateElem(h,f)
(8)在第4个元素位置上插入f元素:ListInsert(h,4,f);
(9)输出单链表h:DispList(h);
(10)删除h的第3个元素:ListDelete(h,3,e);
(11)输出单链表h:DispList(h);
(12)释放单链表h:DestroyList(h);
oj2-2的项目的模块结构:
在文件algo2-2中,
1.定义单链表结构类型;
2.初始化单链表
3.定义释放单链表的函数
4.定义判断单链表是否为空的函数
5.定义返回单链表元素个数的函数
6.定义输出单链表的函数
7.定义获取第i个元素的函数
8.定义查找元素的函数
9.定义插入元素的函数
10.定义删除元素的函数
在文件exp2-2中分别调用algo2-2中所定义的函数
函数调用关系图
。
详细设计
源代码清单见附录。
测试、改进、界面
要求:逐一测试各个功能,包括正常测试(例如插入——i在合理范围的测试)、极端情况的测试(例如插入——i超出下限、上限的测试),并逐一做出结论,对出现异常的要给出改进方案。
插入功能测试
i=4时
界面:
i=-2时
界面:
i=7时
界面:
结论:当元素插入位置在合理范围内,能够准确完成插入;当元素插入位置超出下限时,虽然能够完成插入,但是插入的位置却不是预期那样;当元素插入位置超出上限,元素不能够进行插入。
改进:
当i=-2,
界面:
当i=7时
界面:
查找功能测试
i=3时
界面:
当i=8时
界面:
当i=-2时
界面:
结论:在单链表的的实际长度内,可以查找到任何位置的元素;当i超出单链表的上限或者下限时,不能找到所要找的元素。
改进:
i=8时
界面:
i=-2时
界面:
3、查找功能测试
当元素在链表内
界面:
当元素不在链表内
界面:
结论:当元素在链表内时,能够找出其相对应的位置;否则,则不能查找其位置。
改进:
当元素不在链表内
界面:
删除功能测试
i=3时
界面:
i=8时
界面:
i=-2时
界面:
结论:当i在合理范围内,可以删除任意元素;当i超出上限时,无法删除想要删除的元素;当i超出下限时,程序直接删除了第一个元素。
改进:
i=8
界面:
i=-2时
界面:
附录——源代码清单
/*文件名:algo2-2.cpp*/
#include stdio.h
#include malloc.h
typedef char ElemType;
typedef struct LNode /*定义单链表结点类型*/
{
ElemT
文档评论(0)