预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

//应用问题:求入栈序列是否能得到出栈序列//假设进栈序列为:ABCD,求是否能得到出栈序列为ACBD//暂时定义元素类型为:字符型/*1.问题:火车调度我们希望利用编写的栈代码,写一个算法,实现一个新的操作,match操作实现:输入两串四个字符,例如ABCD和BDCA,输出:得到与得不到作用为:假设第一串符号是输入例如:ABCD,则使用栈来判断是否能得到第二串符号BDCA如果能得到返回成功否则返回失败2.问题:数值转换输入一个正整数,使用栈得到其二进制3.问题:括号匹配输入一串括号,判断其是否匹配*/#include<stdio.h>#include<stdlib.h>typedefintStatus;#defineSUCCESS1#defineERROR0#defineSTACKNULL2#defineOVERFLOW3#defineINI_STACK_SIZE30//栈中任何一个元素的假象数据类型typedefcharSElemType;//////////////////////////////顺序存储结构栈的定义/描述///////////////////////////typedefstructStack{SElemType*base;SElemType*top;intstacksize;}Stack;////////////////////////////////////////////////////////////栈的基本操作:创建一个栈,销毁一个栈,进栈,出栈,判断栈满,判断栈空,////////////////////////////////////////////////////////////算法:创建一个栈create//输入:栈头S//输出:创建成功或失败//功能:创建一个顺序栈///////////////////////////////1:向操作系统申请一片空间,赋值到栈头s变量(base)中//2:判断是否申请成功,申请失败则返回创建失败!//3:栈大小(实际申请的空间可以容纳元素的个数)赋值到s变量(栈容量stacksize)中//4:top指针指向栈底;//5:返回创建成功!/////////////////////////////Statuscreate(Stack*s){s->base=(SElemType*)malloc(INI_STACK_SIZE*sizeof(SElemType));if(!s->base)return(ERROR);//if(s->base==MULL)return(ERROR);s->stacksize=INI_STACK_SIZE;s->top=s->base;//递增栈return(SUCCESS);}///////////////////////////////算法:销毁一个栈destroy//输入:待销毁的栈//输出:无//功能:销毁一个栈s///////////////////////////////1:释放s栈(base)的空间/////////////////////////////voiddestroy(Stack*s){free(s->base);}///////////////////////////////算法:入栈push//输入:栈,待入栈的数据//输出:入栈成功与失败//功能:将待入栈的数据压入栈中///////////////////////////////1:如果判断栈是满的返回栈溢出//2:将待入栈的数据存入栈顶指针top指向的空间,//3:栈顶指针top下移一格//4:返回入栈成功/////////////////////////////Statuspush(Stack*s,SElemTypee){if(s->top==(s->base+s->stacksize))return(OVERFLOW);*s->top++=e;//save(s->top,e);return(SUCCESS);}///////////////////////////////算法:出栈pop//输入:栈,出栈的那个元素e(该元素是栈顶出栈的元素带到调用它的函数中,不作为输入使用)//输出:出栈成功或失败//功能:出栈,出栈的元素存放到输入的变量e中///////////////////////////////1:判断如果栈是空的返回出栈失败/栈空//2: