#include
#include
#include
#include
#include
#defineSTACK_INIT_SIZE100//存储空间初始分配量
#defineOVERFLOW-1
#defineOK1
#defineSTACKINCREMENT10//存储空间分配增量
#defineERROR0
#defineTRUE1
#defineFALSE0
#defineMAXQSIZE100
typedefcharQElemType;
typedefcharSElemType;
typedefintStatus;
/*********************************************************
*
*栈类型及其基本操作
*
**********************************************************/
typedefstruct{//顺序栈的定义
SElemType*ba;
SElemType*top;
intstacksize;
}SqStack;
StatusInitStack(SqStack&S){//构造一个空栈S
=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!)exit(OVERFLOW);//存储分配失败
=;
ize=STACK_INIT_SIZE;
returnOK;
}
StatusPush(SqStack&S,SElemTypee){
//插入元素e为新世界的栈顶元素
if(>=ize){//栈满,追加存储空间
=(SElemType
*)realloc(,(ize+STACKINCREMENT)*sizeof(SElemType));
if(!)exit(OVERFLOW);//存储分配失败
=+ize;
ize+=STACKINCREMENT;
}
*++=e;
returnOK;
}
StatusPop(SqStack&S,SElemType&e){
//若栈不空,则删除S的栈顶元素,用e反回其值,并返回OK;否则返回ERROR
if(==)returnERROR;
e=*--;
returnOK;
}
StatusStackEmpty(SqStackS){//判断栈S是否已空
if(==)
returnTRUE;
elreturnFALSE;
}
/*********************************************************
*
*队列类型及其基本操作
*
**********************************************************/
typedefstruct{
QElemType*ba;
intfront;
intrear;
}SqQueue;
StatusInitQueue(SqQueue&Q){
=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
if(!)exit(0);
==0;
return1;
}
StatusEnQueue(SqQueue&Q,QElemTypee){
if((+1)%MAXQSIZE==)return0;
[]=e;
=(+1)%MAXQSIZE;
return1;
}
StatusDeQueue(SqQueue&Q,QElemType&e){
if(==)return0;
e=[];
=(+1)%MAXQSIZE;
return1;
}
本文发布于:2022-11-14 15:09:49,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/18172.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |