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;
} 展开
#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;
} 展开
2个回答
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) //以当前已分配内存大小和扩大、缩小倍数重新分配
{
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) //以当前已分配内存大小和扩大、缩小倍数重新分配
{
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询