1、数据结构结课实验带答案线性表一、顺序表建立_新1、定义顺序表存储结构2、初始化顺序表为空(InitList_Sq)3、输入顺序表数据(CreateList_Sq)4、遍历(输出)顺序表数据(TraverseList_Sq)5、销毁顺序表数据(DestroyList_Sq)例如:输入元素个数和数据如下:55 3 8 7 9程序输出为:5,3,8,7,9二、单链表的建立-前插法_新1、定义单链表存储结构2、初始化一个空的单链表L(InitList_L)3、用前插法创建单链表数据(CreateList_F)4、遍历(输出)单链表表数据(TraverseList_L)5、销毁单链表表数据(Destro
2、yList_L)例如:输入单链表结点个数和数据如下:59 7 8 3 5程序输出为:5,3,8,7,9三、单链表的建立-后插法_ 新1、定义单链表存储结构2、初始化一个空的单链表L(InitList_L)3、用后插法创建单链表数据(CreateList_L)4、遍历单链表表数据(TraverseList_L)5、销毁单链表表数据(DestroyList_L)例如:输入元素个数和数据如下:55 3 8 7 9 程序输出为:5,3,8,7,9四、顺序表的插入_新1、定义插入函数(ListInsert_Sq)2、在主函数中遍历输出插入前线性表中的元素3、在主函数中输入插入元素的位置和数据信息4、显示
3、插入后的顺序表数据信息(TraverseList_Sq)例如:输入元素个数和数据如下:55 3 8 7 9插入元素的位置和值为:26程序输出为:5,3,8,7,9 /在输入插入位置和值之前遍历输出的线性表中的数据元素5,6,3,8,7,9模板如下:#include #includeusing namespace std;#define MAXSIZE 100 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;type
4、def int ElemType;typedef struct ElemType *elem; /指向数据元素的基地址 int length; /线性表的当前长度 SqList;Status InitList_Sq(SqList *L) /构造一个空的顺序表L Status CreateList_Sq(SqList &L,int n) /在此处定义顺序表插入函数ListInsert_Sqvoid TraverseList_Sq(SqList &L) void DestroyList_Sq(SqList &L) int main() SqList L; int i,n,e; InitList_S
5、q(&L); /提示:输入元素个数: cinn; CreateList_Sq(L,n); TraverseList_Sq(L); /遍历输出插入前线性表数据元素 /提示:在顺序表中输入新元素插入的位置和数据: cinie; /在此处编写 ListInsert_Sq函数的调用语句 TraverseList_Sq(L); DestroyList_Sq(L); return 0;五、顺序表的查找按值进行查找_新1、定义按值查找函数(GetElem_Sq)2、在主函数中遍历输出查找前线性表中的元素3、在主函数中输入待查元素4、显示待查找元素的位置例如: 输入顺序表元素个数和数据如下:55 3 8 7
6、9输入的待查找元素为:3程序输出结果有:5,3,8,7,9 /在查找之前遍历输出线性表中的数据元素2 /待查元素在线性表中的位置六、顺序表的查找按序号进行查找_新1、定义按序查找函数(GetElem_Sq)2、在主函数中遍历输出查找之前线性表中的元素2、在主函数中输入待查元素在顺序表中的位序3、显示查找后的数据例如: 输入顺序表元素个数和数据如下:55 3 8 7 9输入查找元素的位序为:2程序输出结果为:5,3,8,7,9 /在调用查找函数之前遍历输出的线性表中的数据元素3 /输出的待查元素的位序七、单链表的插入_新1、定义插入函数(ListInsert_L)2、在主函数中输出插入新结点之前
7、单链表中的结点信息(TraverseList_L)3、在主函数中输入插入结点的位置和数据信息4、显示插入后的单链表数据信息(TraverseList_L)例如:输入单链表结点个数和数据如下:55 3 8 7 9结点插入的位置和值为:26程序输出为:5,3,8,7,9 / 插入新结点之前输出的单链表中的结点信息5,6,3,8,7,9 /插入新结点之后输出的单链表中的结点信息模板如下:#include using namespace std;#define MAXSIZE 100 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#de
8、fine INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef struct LNode ElemType data; /结点的数据域 struct LNode *next; /结点的指针域 LNode, *LinkList; /LinkList为指向结构体LNode的指针类型Status InitList_L(LinkList &L) /构造一个空的单链表L void CreateList_L(LinkList &L,int n) /在此处定义单链表的插入函数ListInsert_Lvo
9、id TraverseList_L(LinkList L) /依次输出单链表里的每个元素 Status DestroyList_L(LinkList &L) int main() LinkList L; /用LinkList L;替换,与#include LinkList.h配合 int n,i; ElemType e; InitList_L(L); /提示:请输入单链表的结点个数: cinn; CreateList_L(L,n); TraverseList_L(L); /提示:在单链表中输入结点插入的位置和数据: cinie; /在此处调用单链表的插入函数 TraverseList_L(L)
10、; DestroyList_L(L); return 0;八、顺序表删除_新1、定义删除函数(ListDelete_Sq)2、在主函数中遍历输出插入前线性表中的元素3、在主函数中输入被删元素的位置4、显示删除后的线性表元素例如: 输入顺序表元素个数和数据如下:55 3 8 7 9输入被删元素的位置:2程序输出结果为:5,3,8,7,9 /删除元素之前输出的线性表中的数据元素3 /输出的被删除元素5,8,7,9 /输出删除元素之后线性表中的数据元素九、单链表的查找-按序号查找_新1、定义按序查找函数(GetElem_Sq)2、在主函数中输出插入新结点之前单链表中的结点信息(TraverseLis
11、t_L)3、在主函数中输入待查元素在单链表中的位序4、显示查找后的数据例如: 输入单链表结点个数和数据如下:55 3 8 7 9输入查找结点的位序为:2程序输出结果为:5,3,8,7,9 / 插入新结点之前输出的单链表中的结点信息3 /输出该位置上的结点信息十、单链表结点的删除_ 新1、定义删除函数(ListDelete_L2、在主函数中遍历输出删除前单链表中的结点信息3、在主函数中输入被删结点的位置4、显示删除后的单链表的结点信息例如: 输入单链表结点个数和数据如下:55 3 8 7 9 输入被删结点的位置: 2程序输出结果为:5,3,8,7,9 /删除结点之前遍历输出的单链表中的结点信息3
12、 /输出被删除结点的结点信息5,8,7,9 /删除结点之后遍历输出的单链表中的结点信息十一、线性表的合并_新假设利用两个线性表LA和LB分别表示两个集合A和B,现要求一个新的集合 A=AB,例如,设LA=(7 5 3 11 ),LB=( 2 6 3),合并后LA=(7 5 3 11 2 6)1、定义线性表的顺序存储结构2、初始化线性表(InitList_Sq)3、创建线性表(CreateList_Sq)4、定义线性表的合并函数(unionList_Sq),将存在于线性表LB中而不存在于线性表LA中的数据元素插入到线性表LA中, (在合并函数中,还将包含对函数ListLengtht_Sq、Lis
13、tInsert_Sq、LocateElem_Sq和GetElem_Sq的调用)5、在主函数中输入两个线性表LA,LB,调用合并函数6、遍历合并后的线性表LA,并输出数据(TraverseList_Sq)例如:输入线性表LA的元素个数和数据如下:47 5 3 11 输入有序表LB的元素个数和数据如下:3 2 6 3输出为:7,5,3,11 /输出线性表LA的数据元素2,6,3 /输出线性表LB的数据元素7,5,3,11,2,6 /输出合并后的线性表LA的数据元素十二、有序表的合并_新已知线性表LA 和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元
14、素仍按值非递减有序排列.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的元素个数和数据如下:
15、42 5 8 9输入有序表LB的元素个数和数据如下:63 4 8 10 12 20 输出为:2,5,8,9 /输出LA表的数据元素3,4,8,10,12,20 /输出LB表的数据元素2,3,4,5,8,8,9,10,12,20 /输出合并后的LC表的数据元素十三、有序链表的合并_新已知线性表LA 和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.1、用后插法创建单链表数据(CreateList_L)2、定义遍历函数输出单链表数据(TraverseList_L)3、定义有序链表合并函数(MergeList_L),将两个非递减
16、的有序链表LA和LB合并为一个新的有序链表LC,且LC中的结点元素仍按值非递减有序排列4、在主函数中输出LA和LB表的结点信息(TraverseList_L)5、在主函数中调用合并函数(MergeList_L)6、遍历合并后的有序链表LC,并输出结点信息(TraverseList_L)例如:输入有序链表LA的结点个数和数据如下:42 5 8 9输入有序链表LB的结点个数和数据如下:63 4 8 10 12 20 输出为:2,5,8,9 /输出LA表的结点信息3,4,8,10,12,20 /输出LB表的结点信息2,3,4,5,8,8,9,10,12,20 /输出合并后的LC表的结点信息栈和队列一
17、、顺序栈的建立1.定义顺序栈的存储结构2.初始化顺序栈为空栈(InitStack_Sq)3.输入要入栈的元素个数n4.向顺序栈中压入n个元素(Push_Sq)5.将顺序栈中的元素从栈顶到栈底依次输出(StackTraverse_Sq)6.销毁顺序栈(DestroyStack_Sq)例如:54 3 5 10 99 10 5 3 4 /遍历输出时最后一个元素后有一个空格二、顺序栈的入栈1.定义顺序栈入栈函数(Push_Sq)2.输入要入栈的元素个数n3.向顺序栈中压入n个元素4.将顺序栈中的元素从栈顶到栈底依次输出(StackTraverse_Sq)5.销毁顺序栈(DestroyStack_Sq)
18、例如:56 2 8 10 99 10 8 2 6 /遍历输出时最后一个元素后有一个空格模板如下:#include #include using namespace std;#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int SElemType;#define MAXSIZE 100typedef struct SElemType *base; SElemType *top; int stacksize;SqStack;Status InitStack_
19、Sq(SqStack &S) void DestroyStack_Sq(SqStack &S) /在此处定义入栈函数Push_Sqvoid StackTraverse_Sq(SqStack S) int main() SqStack S; InitStack_Sq(S); int n; SElemType e; cinn; for(int i=1;ie; /此处调用入栈函数 StackTraverse_Sq(S); DestroyStack_Sq(S); return 0;三、顺序栈的出栈1.定义顺序栈出栈函数(Pop_Sq)2.定义求顺序栈栈长函数(StackLength_Sq)3.输入要入
20、栈的元素个数n4.向顺序栈中压入n个元素5.将顺序栈中的元素从栈顶到栈底依次输出(StackTraverse_Sq)6.销毁顺序栈(DestroyStack_Sq)例如:42 4 6 88 6 4 2 /遍历输出时最后一个元素后有一个空格46 4 2 /遍历输出时最后一个元素后有一个空格83四、顺序栈栈顶元素的获取1.定义获取顺序栈栈顶元素函数(GetTop_Sq)2.输入要入栈的元素个数n3.向顺序栈中压入n个元素4.将顺序栈中的元素从栈顶到栈底依次输出(StackTraverse_Sq)5.获取栈顶元素6.输出栈顶元素7.销毁顺序栈(DestroyStack_Sq)例如:42 4 6 88
21、 6 4 2 /遍历输出时最后一个元素后有一个空格8五、链栈的建立1.定义链栈的结点存储结构2.初始化链栈为空栈(InitStack_Link)3.输入要入栈的元素个数n4.向链栈中压入n个元素(Push_Link)5.从栈顶到栈底遍历链栈数据(StackTraverse_Link)6.销毁链栈(DestroyStack_Link)例如:54 3 5 10 99 10 5 3 4 /遍历输出时最后一个元素后有一个空格六、链栈的入栈1.定义链栈的入栈函数(Push_Link)2.输入要入栈的元素个数n3.向栈中压入n个元素4.将链栈中的元素从栈顶到栈底依次输出(StackTraverse_Lin
22、k)5.销毁链栈(DestroyStack_Link)例如:51 2 3 4 55 4 3 2 1 /遍历输出时最后一个元素后有一个空格模板如下:#include using namespace std;#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int SElemType;#define MAXSIZE 100typedef struct StackNode SElemType data; struct StackNode *next;StackNo
23、de,*LinkStack;Status InitStack_Link(LinkStack &S) void DestroyStack_Link(LinkStack &S) bool StackEmpty_Link(LinkStack S) /此处定义入栈函数Push_Linkvoid StackTraverse_Link(LinkStack S) int main() LinkStack S; int n; SElemType e; InitStack_Link(S); cinn; for(int i=1;ie; /此处调用入栈函数 StackTraverse_Link(S); Destro
24、yStack_Link(S); return 0;七、链栈的出栈1.定义求栈长函数(StackLength_Link)2.定义出栈函数(Pop_Link)3.输入要入栈的元素个数n4.向栈中压入n个元素(Push_Link)5.将栈中的元素从栈顶到栈底依次输出(StackTraverse_Link)6.输出栈长7.执行出栈操作8.将栈中的元素从栈顶到栈底依次输出9.输出出栈元素10.输出栈长11.销毁链栈(DestroyStack_Link)例如:51 2 3 4 55 4 3 2 1 /遍历输出时最后一个元素后有一个空格54 3 2 1 /遍历输出时最后一个元素后有一个空格54八、链栈栈顶元
25、素的获取1.定义获取栈顶元素函数(GetTop_Link)2.输入要入栈的元素个数n3.向栈中压入n个元素(Push_Link)4.将栈中的元素从栈顶到栈底依次输出(StackTraverse_Link)5.获取栈顶元素6.输出栈顶元素7.销毁链栈(DestroyStack_Link)例如:42 4 6 88 6 4 2 /遍历输出时最后一个元素后有一个空格8九、循环队列的建立1.定义循环队列的存储结构2.初始化循环队列为空队列(InitQueue_Sq)3.输入要入队的元素个数n4.向循环队列中输入n个元素(EnQueue_Sq)5.将循环队列中的元素从队头至队尾依次输出(StackQueu
26、e_Sq)6.销毁循环队列(DestroyQueue_Sq)例如:51 2 3 4 51 2 3 4 5 /遍历输出时最后一个元素后有一个空格十、循环队列的入队1.定义循环队列入队函数(EnQueue_Sq)2.输入要入队的元素个数n3.向循环队列中输入n个元素4.将循环队列中的元素从队头至队尾依次输出(StackQueue_Sq)5.销毁循环队列(DestroyQueue_Sq)例如:56 2 8 10 96 2 8 10 9 /遍历输出时最后一个元素后有一个空格模板如下:#include #include using namespace std;#define OK 1#define ER
27、ROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int QElemType;#define MAXSIZE 100typedef struct QElemType *base; int front; int rear;SqQueue;Status InitQueue_Sq(SqQueue &Q) void DestroyQueue_Sq(SqQueue &Q) /此处定义入队函数EnQueue_Sqvoid QueueTraverse_Sq(SqQueue Q) int main() SqQueue
28、 Q; QElemType e; InitQueue_Sq(Q); int n; cinn; for(int i=1;ie; /此处调用入队函数 QueueTraverse_Sq(Q); DestroyQueue_Sq(Q); return 0;十一、循环队列的出队1.定义求循环队列队长函数(QueueLength_Sq)2.定义循环队列的出队函数(DeQueue_Sq)3.输入要入队的元素个数n4.向循环队列中输入n个元素5.将循环队列中的元素从队头至队尾依次输出(StackQueue_Sq)6.输出队长7.执行出队操作8.将循环队列中的元素从队头至队尾依次输出9.输出出队元素10.输出队长11.销毁循环队列(DestroyQueue_Sq)例如:51 2 3 4 51 2 3 4 5 /遍历输出时最后一个元素后有一个空格52 3 4 5 /遍历输出时最后一个元素后有一个空格14十二、循环队列队头元素的获取1.定义获取循环队列队头元素函数(GetHead_Sq)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1