- 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.需求分析
本演示程序用TC编写,完成线性表的逆置功能。
输入的形式和输入值的范围:逆转线性表中的元素首先需要输入需要逆转的元素,然后通过计算机逆转以后输出。在输入和输出都要求其值为整数。
② 输出的形式:在操作中显示操作是否正确以及操作后逆转的内容。
③ 程序所能达到的功能:完成线性表的元素逆转操作。
④ 测试数据: 输入3,1,2.
输出结果为2,1,3.
3.概要设计
1)为了实现上述程序功能,需要定义线性表的抽象数据类型:
typedef struct LNode 定义元素的类型:ElemType data;
定义的*next结构体类型的指针:struct LNode *next;
作用:定义链表结构体
2)定义新的链表
Status Initial_L LinkList L
3)定义链表实现插入元素功能
Status GetElem_L LinkList L,int i,ElemType *e
4)定义链表实现打印出初始链表的功能:
Status Print LinkList L
5)定义链表实现插入元素的功能:
Status ListInsert_L LinkList L,int i,ElemType e
6)定义链表实现逆转元素的过程:
Status ListInv LinkList L
4. 详细设计
1)为了实现上述程序功能,需要定义线性表的抽象数据类型:
typedef struct LNode 定义元素的类型:ElemType data;
定义的*next结构体类型的指针:struct LNode *next;
作用:定义链表结构体
2)为了实现上述功能,需要新的链表:
Status Initial_L LinkList L L- next NULL;
L- data -1000;
return OK; 3)为了实现上述功能,需要能够插入元素,故引用该函数:
Status GetElem_L LinkList L,int i,ElemType *e return OK; 4)将链表的初始值打印出来:
Status Print LinkList L LNode *p;
p L- next;
if p NULL printf 链表为空!\n ;
while p! NULL printf %d ,p- data ;
p p- next; printf \n ;
return OK; Status Print LinkList L,char *s LNode *p;
p L- next;
if p NULL printf 链表为空!\n ; return ERROR;
printf s ;
while p! NULL printf %d ,p- data ;
p p- next; printf \n ;
return OK; 5)为了实现上述功能,还需要插入功能:
Status ListInsert_L LinkList L,int i,ElemType e \*L为链表,i为链表的长度,e为过渡空间指针*\ LNode *p,*s;
p L;
int j 0;
while pj i-1 \*当链表不为空且插入的元素要插入的位置小于等于链表的长度就执行以下语句*\
p p- next;++j;
if !p||j i-1 return ERROR;\*p为空,则非p为真,if语句可执行,链表为空或者插入在链表的后面,后面是不允许的,所以终止*\
s LinkList malloc sizeof LNode ;\*插入节点,包括指针域和数据域*\
s- data e;
s- next p- next;
p- next s;
return OK; 6 实现逆置功能:
Status ListInv LinkList L LNode *p,*q,*r;
p L- next;
if p NULL ||p- next NULL printf 链表只有一个结点或为空,无需逆转!\n ;
return OK; q p- next;
r q- next;
p- next NULL;
while r! NULL q- next p;
p q;q r;
r r- next; q- next p;
L- next q;
return OK; 5.调试分析
说明:原因在于在打头文件的时候,漏打了其中一个部分,导致指针变量不同,出现错误。
6.使用说明
在编辑程序的时候将要逆转的元素打出,如图,然后点击运行实现元素的逆转过程。
7.
文档评论(0)