C++: 编写程序,求一个顺序栈的判空操作,清空操作与求栈长操作,入栈操作和出栈操作,

#include<stdio.h>#define<malloc.h>#defineStackSpaceIncr20//存储空间的增量typedefstruct{SElem... #include <stdio.h>
#define <malloc.h>
#define StackSpaceIncr 20 //存储空间的增量
typedef struct{
SElemType * base; // SElemType为栈中元素类型,base为表示顺序栈存储空
//间的动态数组
int top; //指示下一次入栈的下标位置
int stackSize; //栈当前的存储空间大小
}SqStack; //SqStack为顺序栈类型

Status stackIsEmpty (sqStack S){
//判断顺序栈S是否为空,空返回TRUE,否则返回FALSE;
if(!S.top)return TRUE;
else return FALSE;
}
void clearStack(SqStack &S)
//顺序栈S清空
S.top=0;
}

int stackLength(SqStack S)
//求顺序栈S的长度
return S.top;
}

Status Push (SqStack &s,SElemType e){
//对于顺序栈S,将元素e入栈
if (S.top==S.stackSize){ //若当前栈的空间已满,则重新获取更大空间
newBase=(SElemType*)realloc(S.base,
(S.stackSize+StackSpaceIncr)*sizeof(SElemType));
if(! newBase) return OVERFLOW;
S.base=newbase;S.stackSize+=StackSpaceIncr;
}
S.base[S.top]= e;
S.top++;
return OK;
}

Status Pop(SqStack &S,SElemType &e){
//将顺序栈S的栈顶元素出栈
if (!S.top)return ERROR;
S.top--;
e=S.base[S.top];
return OK;
}
展开
 我来答
匿名用户
2016-06-16
展开全部
template<class Type>
Stack<Type>::Stack()
{
count=0;
maxSaveCount=8;
data=new Type[maxSaveCount]; //默认初始化分配可以存储8个数据大小的内存空间
}

template<class Type>
bool Stack<Type>::isEmputy() //判断栈是否为空
{
return count==0;
}

template<class Type>
void Stack<Type>::allocateMemoryWithMultiple(float multiple) //以当前已分配内存大小和扩大、缩小倍数重新分配
{
zhangsonglin_c
高粉答主

2016-06-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:6892万
展开全部
已经写得很好了,需要对SElemType
定义一下,在前面增加:
#define SElemType int
之类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式