资源描述
文档供参考,可复制、编制,期待您的好评与关注! 实验 3-1 链栈目的 掌握链栈的实现和简单的应用。源代码/* title: 数据结构实验 name: 栈的链式存储结构 object: 实验目的 采用链式存储结构实现栈的基本操作 实验提示 1. 在stack.h中实现栈的基本操作, 在链式存储结构中可是省去头结点。 2. 在dsp0301.cpp中编写适当的代码,进行测试 include: stack.h * 栈的链式实现 usage: 请查看TO-DO列表,根据要求完成代码 copyright: BTC 2004, Zhuang Bo author: Zhuang Bo date: 2004 description:*/#include #include /for system()#include stack.h /链栈 /测试链栈的主程序int main() LinkStack s; int x; /输入若干正整数以0结束,依次入栈,然后依次出栈并打印 InitStack(s); printf(输入若干正整数以0结束:); scanf(%d,&x); while(x!=0) Push(s,x); scanf(%d,&x); printf(n出栈结果:); while(!StackEmpty(s) Pop(s,x); printf(%4d,x); /- / TODO (#1#): 其它测试程序 /- DestroyStack(s); /销毁栈 system(PAUSE); return 0;/* Name: 栈的链式实现 Copyright: Author: Date: Description: */#ifndef STACK_H_INCLUDED#define STACK_H_INCLUDED#include ds.h /for Status,OK .#ifndef ElemType#define ElemType int /* 数据元素类型默认为 int */#define ELEMTYPE_TAG#endif/链栈的存储结构定义 typedef struct LNode ElemType data; struct LNode *next; LNode, *LinkList;typedef LinkList LinkStack; /链栈类型 /链栈的基本操作声明/构造一个空栈S Status InitStack(LinkStack &S);/销毁栈S Status DestroyStack(LinkStack &S);/将栈S清空 Status ClearStack(LinkStack &S);/若栈S为空返回TRUE,否则FALSE Status StackEmpty(LinkStack S);/返回栈S中的元素个数int StackLength(LinkStack S);/用e返回栈顶元素/ 前提:栈S存在且不空 Status GetTop(LinkStack S, ElemType &e);/元素e入栈S Status Push(LinkStack &S, ElemType e);/S出栈用e返回出栈元素 / 前提:栈S存在且不空 Status Pop(LinkStack &S, ElemType &e);/链栈的基本操作的实现/构造一个空栈S Status InitStack(LinkStack &S) / TODO (#1#): 构造一个空栈S,不带头结点 return ERROR; /-/销毁栈S Status DestroyStack(LinkStack &S) / TODO (#1#):销毁栈S,相当于清空栈 return ERROR; /-/将栈S清空 Status ClearStack(LinkStack &S) / TODO (#1#): 将栈S清空,释放所有结点 return ERROR; /-/若栈S为空返回TRUE,否则FALSE Status StackEmpty(LinkStack S) / TODO (#1#): 若栈S为空返回TRUE,否则FALSE return TRUE; /-/返回栈S中的元素个数int StackLength(LinkStack S) / TODO (#1#): 返回栈S中的元素个数 return 0; /-/用e返回栈顶元素/ 前提:栈S存在且不空 Status GetTop(LinkStack S, ElemType &e) / TODO (#1#):若栈S不空,则用e返回栈顶元素 return ERROR; /-/元素e入栈S Status Push(LinkStack &S, ElemType e) / TODO (#1#): 插入元素e作为新的栈顶 return ERROR; /-/S出栈用e返回出栈元素 / 前提:栈S存在且不空 Status Pop(LinkStack &S, ElemType &e) / TODO (#1#):若栈S不空,则删除栈顶元素用e返回 return ERROR; /-#ifdef ELEMTYPE_TAG#undef ElemType#undef ELEMTYPE_TAG#endif#endif实验 3-2 顺序栈目的 掌握顺序栈的实现和简单的应用。源代码/* title: 数据结构实验 name: 栈的顺序存储结构 object: 实验目的 采用顺序存储结构实现栈的基本操作 实验提示 1. 在stack.h中实现栈的基本操作 2. 在dsp0302.cpp中编写适当的代码,进行测试 include: stack.h * 栈的顺序实现 usage: 请查看TO-DO列表,根据要求完成代码 copyright: BTC 2004, Zhuang Bo author: Zhuang Bo date: 2004 description:*/#include #include /for system()#include stack.h /for SqStack /测试顺序栈的主程序int main() SqStack s; int x; /输入若干正整数以0结束,依次入栈,然后依次出栈并打印 InitStack(s); printf(输入若干正整数以0结束:); scanf(%d,&x); while(x!=0) Push(s,x); scanf(%d,&x); printf(n出栈结果:); while(!StackEmpty(s) Pop(s,x); printf(%4d,x); /- / TODO (#1#): 其它测试程序 /- DestroyStack(s); /销毁栈 system(PAUSE); return 0;/* Name: 顺序栈的实现 Copyright: Author: Date: Description: */#ifndef STACK_H_INCLUDED#define STACK_H_INCLUDED#include ds.h /for Status,OK .#ifndef ElemType#define ElemType int /* 数据元素类型默认为 int */#define ELEMTYPE_TAG#endif#define SElemType ElemType/顺序栈的存储结构定义 #define STACK_INIT_SIZE 100 /* 存储空间初始分配容量 */#define STACKINCREMENT 10 /* 存储空间分配的增量 */typedef struct ElemType *base; /在构造栈之前和销毁栈之后,base为NULL ElemType *top; /栈顶指针 int stacksize; /当前已分配的存储空间(元素个数) SqStack;/顺序栈的基本操作声明/构造一个空栈S Status InitStack(SqStack &S);/销毁栈S Status DestroyStack(SqStack &S);/将栈S清空 Status ClearStack(SqStack &S);/若栈S为空返回TRUE,否则FALSE Status StackEmpty(SqStack S);/返回栈S中的元素个数int StackLength(SqStack S);/用e返回栈顶元素/ 前提:栈S存在且不空 Status GetTop(SqStack S, ElemType &e);/元素e入栈S Status Push(SqStack &S, ElemType e);/S出栈用e返回出栈元素 / 前提:栈S存在且不空 Status Pop(SqStack &S, ElemType &e);/顺序栈的基本操作的实现/构造一个空栈S Status InitStack(SqStack &S) / TODO (#1#): 构造一个空栈S return ERROR; /-/销毁栈S Status DestroyStack(SqStack &S) / TODO (#1#):销毁栈S,相当于清空栈 return ERROR; /-/将栈S清空 Status ClearStack(SqStack &S) / TODO (#1#): 将栈S清空,释放所有结点 return ERROR; /-/若栈S为空返回TRUE,否则FALSE Status StackEmpty(SqStack S) / TODO (#1#): 若栈S为空返回TRUE,否则FALSE return TRUE; /-/返回栈S中的元素个数int StackLength(SqStack S) / TODO (#1#): 返回栈S中的元素个数 return 0; /-/用e返回栈顶元素/ 前提:栈S存在且不空 Status GetTop(SqStack S, ElemType &e) / TODO (#1#):若栈S不空,则用e返回栈顶元素 return ERROR; /-/元素e入栈S Status Push(SqStack &S, ElemType e) / TODO (#1#): 插入元素e作为新的栈顶 return ERROR; /-/S出栈用e返回出栈元素 / 前提:栈S存在且不空 Status Pop(SqStack &S, ElemType &e) / TODO (#1#):若栈S不空,则删除栈顶元素用e返回 return ERROR; /-#ifdef ELEMTYPE_TAG#undef ElemType#undef ELEMTYPE_TAG#endif#endif/* title: 数据结构实验 name: 顺序栈和栈的应用 object: 实验目的 实现顺序栈;实现几个栈的具体应用 实验提示 1. 在stack.h中实现顺序栈 2. 在app0302.cpp中编写栈的应用程序, 数制转换,括号匹配的检验 include: stack.h * 顺序栈模块 usage: 请查看TO-DO列表,根据要求完成代码 copyright: BTC 2004, Zhuang Bo author: Zhuang Bo date: 2004 description:*/#include #include /for system()#include stack.h /for SqStack/数制转换程序void Conversion();/检验括号匹配void Match();int main() /数制转换程序 Conversion(); /检验括号匹配 Match(); system(PAUSE); return 0;/数制转换程序void Conversion() /- / TODO (#1#): 这里实现数制转换程序 /-/检验括号匹配void Match() /- / TODO (#1#): 这里实现检验括号匹配的程序 /-/* Name: 顺序栈的实现 Copyright: Author: Date: Description: */#ifndef STACK_H_INCLUDED#define STACK_H_INCLUDED#include ds.h /for Status,OK .#ifndef ElemType#define ElemType int /* 数据元素类型默认为 int */#define ELEMTYPE_TAG#endif#define SElemType ElemType/顺序栈的存储结构定义 #define STACK_INIT_SIZE 100 /* 存储空间初始分配容量 */#define STACKINCREMENT 10 /* 存储空间分配的增量 */typedef struct ElemType *base; /在构造栈之前和销毁栈之后,base为NULL ElemType *top; /栈顶指针 int stacksize; /当前已分配的存储空间(元素个数) SqStack;/顺序栈的基本操作声明/构造一个空栈S Status InitStack(SqStack &S);/销毁栈S Status DestroyStack(SqStack &S);/将栈S清空 Status ClearStack(SqStack &S);/若栈S为空返回TRUE,否则FALSE Status StackEmpty(SqStack S);/返回栈S中的元素个数int StackLength(SqStack S);/用e返回栈顶元素/ 前提:栈S存在且不空 Status GetTop(SqStack S, ElemType &e);/元素e入栈S Status Push(SqStack &S, ElemType e);/S出栈用e返回出栈元素 / 前提:栈S存在且不空 Status Pop(SqStack &S, ElemType &e);/顺序栈的基本操作的实现/构造一个空栈S Status InitStack(SqStack &S) / TODO (#1#): 构造一个空栈S return ERROR; /-/销毁栈S Status DestroyStack(SqStack &S) / TODO (#1#):销毁栈S,相当于清空栈 return ERROR; /-/将栈S清空 Status ClearStack(SqStack &S) / TODO (#1#): 将栈S清空,释放所有结点 return ERROR; /-/若栈S为空返回TRUE,否则FALSE Status StackEmpty(SqStack S) / TODO (#1#): 若栈S为空返回TRUE,否则FALSE return TRUE; /-/返回栈S中的元素个数int StackLength(SqStack S) / TODO (#1#): 返回栈S中的元素个数 return 0; /-/用e返回栈顶元素/ 前提:栈S存在且不空 Status GetTop(SqStack S, ElemType &e) / TODO (#1#):若栈S不空,则用e返回栈顶元素 return ERROR; /-/元素e入栈S Status Push(SqStack &S, ElemType e) / TODO (#1#): 插入元素e作为新的栈顶 return ERROR; /-/S出栈用e返回出栈元素 / 前提:栈S存在且不空 Status Pop(SqStack &S, ElemType &e) / TODO (#1#):若栈S不空,则删除栈顶元素用e返回 return ERROR; /-#ifdef ELEMTYPE_TAG#undef ElemType#undef ELEMTYPE_TAG#endif#endif13 / 13
展开阅读全文