数据结构结课实验带答案Word格式.docx
- 文档编号:17499526
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:36
- 大小:21.52KB
数据结构结课实验带答案Word格式.docx
《数据结构结课实验带答案Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构结课实验带答案Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
5,6,3,8,7,9
模板如下:
#include<
iostream>
#include<
stdlib.h>
usingnamespacestd;
#defineMAXSIZE100
#defineTRUE1
#defineFALSE0
#defineOK1
#defineERROR0
#defineINFEASIBLE-1
#defineOVERFLOW-2
typedefintStatus;
typedefintElemType;
typedefstruct{
ElemType*elem;
//指向数据元素的基地址
intlength;
//线性表的当前长度
}SqList;
StatusInitList_Sq(SqList*L)
{//构造一个空的顺序表L
}
StatusCreateList_Sq(SqList&
L,intn)
{
//在此处定义顺序表插入函数ListInsert_Sq
voidTraverseList_Sq(SqList&
L)
voidDestroyList_Sq(SqList&
}
intmain()
SqListL;
inti,n,e;
InitList_Sq(&
L);
//提示:
输入元素个数:
cin>
>
n;
CreateList_Sq(L,n);
TraverseList_Sq(L);
//遍历输出插入前线性表数据元素
在顺序表中输入新元素插入的位置和数据:
i>
e;
//在此处编写ListInsert_Sq函数的调用语句
DestroyList_Sq(L);
return0;
五、顺序表的查找—按值进行查找_新
1、定义按值查找函数(GetElem_Sq)
2、在主函数中遍历输出查找前线性表中的元素
3、在主函数中输入待查元素
4、显示待查找元素的位置
输入顺序表元素个数和数据如下:
输入的待查找元素为:
3
程序输出结果有:
5,3,8,7,9//在查找之前遍历输出线性表中的数据元素
2//待查元素在线性表中的位置
六、顺序表的查找—按序号进行查找_新
1、定义按序查找函数(GetElem_Sq)
2、在主函数中遍历输出查找之前线性表中的元素
2、在主函数中输入待查元素在顺序表中的位序
3、显示查找后的数据
输入查找元素的位序为:
程序输出结果为:
5,3,8,7,9//在调用查找函数之前遍历输出的线性表中的数据元素
3//输出的待查元素的位序
七、单链表的插入_新
1、定义插入函数(ListInsert_L)
2、在主函数中输出插入新结点之前单链表中的结点信息(TraverseList_L)
3、在主函数中输入插入结点的位置和数据信息
4、显示插入后的单链表数据信息(TraverseList_L)
结点插入的位置和值为:
5,3,8,7,9//插入新结点之前输出的单链表中的结点信息
5,6,3,8,7,9//插入新结点之后输出的单链表中的结点信息
typedefstructLNode{
ElemTypedata;
//结点的数据域
structLNode*next;
//结点的指针域
}LNode,*LinkList;
//LinkList为指向结构体LNode的指针类型
StatusInitList_L(LinkList&
L)
{
//构造一个空的单链表L
voidCreateList_L(LinkList&
//在此处定义单链表的插入函数ListInsert_L
voidTraverseList_L(LinkListL)
//依次输出单链表里的每个元素
}
StatusDestroyList_L(LinkList&
LinkListL;
//用LinkListL;
替换,与#include"
LinkList.h"
配合
intn,i;
ElemTypee;
InitList_L(L);
请输入单链表的结点个数:
CreateList_L(L,n);
TraverseList_L(L);
在单链表中输入结点插入的位置和数据:
//在此处调用单链表的插入函数
DestroyList_L(L);
八、顺序表删除_新
1、定义删除函数(ListDelete_Sq)
3、在主函数中输入被删元素的位置
4、显示删除后的线性表元素
输入被删元素的位置:
5,3,8,7,9//删除元素之前输出的线性表中的数据元素
3//输出的被删除元素
5,8,7,9//输出删除元素之后线性表中的数据元素
九、单链表的查找-按序号查找_新
3、在主函数中输入待查元素在单链表中的位序
4、显示查找后的数据
输入单链表结点个数和数据如下:
输入查找结点的位序为:
3//输出该位置上的结点信息
十、单链表结点的删除_新
1、定义删除函数(ListDelete_L
2、在主函数中遍历输出删除前单链表中的结点信息
3、在主函数中输入被删结点的位置
4、显示删除后的单链表的结点信息
输入被删结点的位置:
2
5,3,8,7,9//删除结点之前遍历输出的单链表中的结点信息
3//输出被删除结点的结点信息
5,8,7,9//删除结点之后遍历输出的单链表中的结点信息
十一、线性表的合并_新
假设利用两个线性表LA和LB分别表示两个集合A和B,现要求一个新的集合A=A∪B,例如,设LA=(75311),LB=(263),合并后LA=(7531126)
1、定义线性表的顺序存储结构
2、初始化线性表(InitList_Sq)
3、创建线性表(CreateList_Sq)
4、定义线性表的合并函数(unionList_Sq),将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中,
(在合并函数中,还将包含对函数ListLengtht_Sq、ListInsert_Sq、LocateElem_Sq和GetElem_Sq的调用)
5、在主函数中输入两个线性表LA,LB,调用合并函数
6、遍历合并后的线性表LA,并输出数据(TraverseList_Sq)
输入线性表LA的元素个数和数据如下:
4
75311
输入有序表LB的元素个数和数据如下:
263
输出为:
7,5,3,11//输出线性表LA的数据元素
2,6,3//输出线性表LB的数据元素
7,5,3,11,2,6//输出合并后的线性表LA的数据元素
十二、有序表的合并_新
已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.
1、定义有序表合并函数(MergeList_Sq),将两个非递减的有序表LA和LB合并为一个新的有序表LC,且LC中的数据元素仍按值非递减有序排列
(在合并函数中,还将包含对ListLengtht_Sq、ListInsert_Sq和LocateElem_Sq的调用)
2、在主函数中输出LA表的数据元素(TraverseList_Sq)
3、在主函数中输出LB表的数据元素(TraverseList_Sq)
4、在主函数中输入两个非递减的有序表LA,LB,调用合并函数
5、遍历合并后的有序表LC,并输出数据(TraverseList_Sq)
输入有序表LA的元素个数和数据如下:
2589
348101220
2,5,8,9//输出LA表的数据元素
3,4,8,10,12,20//输出LB表的数据元素
2,3,4,5,8,8,9,10,12,20//输出合并后的LC表的数据元素
十三、有序链表的合并_新
1、用后插法创建单链表数据(CreateList_L)
2、定义遍历函数输出单链表数据(TraverseList_L)
3、定义有序链表合并函数(MergeList_L),将两个非递减的有序链表LA和LB合并为一个新的有序链表LC,且LC中的结点元素仍按值非递减有序排列
4、在主函数中输出LA和LB表的结点信息(TraverseList_L)
5、在主函数中调用合并函数(MergeList_L)
6、遍历合并后的有序链表LC,并输出结点信息(TraverseList_L)
输入有序链表LA的结点个数和数据如下:
输入有序链表LB的结点个数和数据如下:
2,5,8,9//输出LA表的结点信息
3,4,8,10,12,20//输出LB表的结点信息
2,3,4,5,8,8,9,10,12,20//输出合并后的LC表的结点信息
栈和队列
一、顺序栈的建立
1.定义顺序栈的存储结构
2.初始化顺序栈为空栈(InitStack_Sq)
3.输入要入栈的元素个数n
4.向顺序栈中压入n个元素(Push_Sq)
5.将顺序栈中的元素从栈顶到栈底依次输出(StackTraverse_Sq)
6.销毁顺序栈(DestroyStack_Sq)
435109
910534//遍历输出时最后一个元素后有一个空格
二、顺序栈的入栈
1.定义顺序栈入栈函数(Push_Sq)
2.输入要入栈的元素个数n
3.向顺序栈中压入n个元素
4.将顺序栈中的元素从栈顶到栈底依次输出(StackTraverse_Sq)
5.销毁顺序栈(DestroyStack_Sq)
628109
910826//遍历输出时最后一个元素后有一个空格
typedefintSElemType;
#defineMAXSIZE100
typedefstruct
SElemType*base;
SElemType*top;
intstacksize;
}SqStack;
StatusInitStack_Sq(SqStack&
S)
voidDestroyStack_Sq(SqStack&
//在此处定义入栈函数Push_Sq
voidStackTraverse_Sq(SqStackS)
SqStackS;
InitStack_Sq(S);
intn;
SElemTypee;
for(inti=1;
i<
=n;
i++)
{
cin>
//此处调用入栈函数
StackTraverse_Sq(S);
DestroyStack_Sq(S);
三、顺序栈的出栈
1.定义顺序栈出栈函数(Pop_Sq)
2.定义求顺序栈栈长函数(StackLength_Sq)
4.向顺序栈中压入n个元素
2468
8642//遍历输出时最后一个元素后有一个空格
642//遍历输出时最后一个元素后有一个空格
8
四、顺序栈栈顶元素的获取
1.定义获取顺序栈栈顶元素函数(GetTop_Sq)
5.获取栈顶元素
6.输出栈顶元素
7.销毁顺序栈(DestroyStack_Sq)
五、链栈的建立
1.定义链栈的结点存储结构
2.初始化链栈为空栈(InitStack_Link)
4.向链栈中压入n个元素(Push_Link)
5.从栈顶到栈底遍历链栈数据(StackTraverse_Link)
6.销毁链栈(DestroyStack_Link)
六、链栈的入栈
1.定义链栈的入栈函数(Push_Link)
3.向栈中压入n个元素
4.将链栈中的元素从栈顶到栈底依次输出(StackTraverse_Link)
5.销毁链栈(DestroyStack_Link)
12345
54321//遍历输出时最后一个元素后有一个空格
typedefstructStackNode
SElemTypedata;
structStackNode*next;
}StackNode,*LinkStack;
StatusInitStack_Link(LinkStack&
voidDestroyStack_Link(LinkStack&
boolStackEmpty_Link(LinkStackS)
//此处定义入栈函数Push_Link
voidStackTraverse_Link(LinkStackS)
LinkStackS;
InitStack_Link(S);
StackTraverse_Link(S);
DestroyStack_Link(S);
七、链栈的出栈
1.定义求栈长函数(StackLength_Link)
2.定义出栈函数(Pop_Link)
4.向栈中压入n个元素(Push_Link)
5.将栈中的元素从栈顶到栈底依次输出(StackTraverse_Link)
6.输出栈长
7.执行出栈操作
8.将栈中的元素从栈顶到栈底依次输出
9.输出出栈元素
10.输出栈长
11.销毁链栈(DestroyStack_Link)
4321//遍历输出时最后一个元素后有一个空格
八、链栈栈顶元素的获取
1.定义获取栈顶元素函数(GetTop_Link)
3.向栈中压入n个元素(Push_Link)
4.将栈中的元素从栈顶到栈底依次输出(StackTraverse_Link)
7.销毁链栈(DestroyStack_Link)
九、循环队列的建立
1.定义循环队列的存储结构
2.初始化循环队列为空队列(InitQueue_Sq)
3.输入要入队的元素个数n
4.向循环队列中输入n个元素(EnQueue_Sq)
5.将循环队列中的元素从队头至队尾依次输出(StackQueue_Sq)
6.销毁循环队列(DestroyQueue_Sq)
12345//遍历输出时最后一个元素后有一个空格
十、循环队列的入队
1.定义循环队列入队函数(EnQueue_Sq)
2.输入要入队的元素个数n
3.向循环队列中输入n个元素
4.将循环队列中的元素从队头至队尾依次输出(StackQueue_Sq)
5.销毁循环队列(DestroyQueue_Sq)
628109//遍历输出时最后一个元素后有一个空格
typedefintQElemType;
QElemType*base;
intfront;
intrear;
}SqQueue;
StatusInitQueue_Sq(SqQueue&
Q)
voidDestroyQueue_Sq(SqQueue&
//此处定义入队函数EnQueue_Sq
voidQueueTraverse_Sq(SqQueueQ)
SqQueueQ;
QElemTypee;
InitQueue_Sq(Q);
//此处调用入队函数
QueueTraverse_Sq(Q);
DestroyQueue_Sq(Q);
十一、循环队列的出队
1.定义求循环队列队长函数(QueueLength_Sq)
2.定义循环队列的出队函数(DeQueue_Sq)
4.向循环队列中输入n个元素
6.输出队长
7.执行出队操作
8.将循环队列中的元素从队头至队尾依次输出
9.输出出队元素
10.输出队长
11.销毁循环队列(DestroyQueue_Sq)
2345//遍历输出时最后一个元素后有一个空格
1
十二、循环队列队头元素的获取
1.定义获取循环队列队头元素函数(GetHead_Sq)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 答案