顺序栈的初始化与入栈出栈顺序栈的初始化与入栈出栈
#include
#include
#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW 2
#define OK 1
typedef int SElemType;
typedef int Status;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(Sq...
顺序栈的初始化与入栈出栈
#include
#include
#define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW 2
#define OK 1
typedef int SElemType;
typedef int Status;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S){
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
Status ChuShihua(SqStack &S) {
int n;
printf("请输入数据以-1结束\n");
while(scanf("%d",&n),n!=-1)
*S.top++=n;
return OK;
}
Status Push(SqStack &S)
{
int e;
printf("请输入要压入的元素:");
scanf("%d",&e);
if(S.top-S.base>=S.stacksize){
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
}
Status Pop(SqStack &S)
{
printf("出栈元素为:");
if(S.top!=S.base)
printf("%d\n",*--S.top);
return 0;
}
void tishi()
{
printf("所有操作如下:\n");
printf("(1)采用顺序存储实现栈的初始化操作。\n");
printf("(2)采用顺序存储实现栈的入栈操作。\n");
printf("(3)采用顺序存储实现栈的出栈操作。\n");
printf("(-1)退出\n");
printf("请选择:");
}
int main()
{
int m;
SqStack s;
InitStack(s);
do{
tishi();
scanf("%d",&m);
switch(m)
{
case 1:
ChuShihua(s);
break;
case 2:
Push(s);
break;
case 3:
Pop(s);
break;
}
}while(m!=-1);
return OK;
}
本文档为【顺序栈的初始化与入栈出栈】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。