#include<stdio.h>
#include<stdlib.h>
#define STACKINCREMENT 10//每次追加栈空间的大小
typedef struct{
StackElemType *top;//栈顶指针
StackElemType *base;//栈底指针
int stacksize;//目前为栈分配的空间,以元素为单位
}Stack;
//栈是否为空
bool StackEmpty(Stack S)
{
if(S.base==S.top)
return true;
else
return false;
}
//入栈
void push(Stack &S,StackElemType elem)
{
if(S.top-S.base>=S.stacksize){//栈已满
S.base=(StackElemType *)realloc(S.base,
(S.stacksize+STACKINCREMENT)*sizeof(StackElemType));
if(!S.base)
exit(1);//追加空间失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=elem;
}
//出栈
void pop(Stack &S,StackElemType &elem)
{
if(S.base == S.top)
exit(1);
elem=*--S.top;
}
一步一步写算法(之入栈出栈)
最新推荐文章于 2023-07-24 10:35:25 发布