#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define initsize 100 //设置初始分配内存
#define add 10 //设置分配增量
typedef char elemtype;
typedef int status;
typedef struct
{
elemtype *base;
elemtype *top; //注意 : top表示栈顶元素的下一个元素
int stacksize;
} sqstack;
void initstack(sqstack &s)//构建栈操作
{
s.base = (elemtype *) malloc((initsize)* sizeof(elemtype));
s.top=s.base;
s.stacksize = initsize;
}
void push(sqstack &s, elemtype e)
{
if(s.top - s.base >= s.stacksize) //当前分配空间不够的情况
{
s.base = (elemtype *) realloc(s.base, (initsize + add) * sizeof(elemtype));
s.top = s.base + s.stacksize;
s.stacksize +=add;
}
*s.top++ =e; // top地址自身加加之后存储数值
}
status pop (sqstack &s)
{
if(s.base == s. top) return 0;
else
{
s.top--;
return *s.top;
}
}
char gettop(sqstack &s)
{
if(s.base == s.top) return false;
else
return *(s.top-1);
}
status isempty(sqstack &s)
{
if(s.base ==s.top ) return 1;
else return 0;
}
int main()
{
return 0;
}
抽象数据类型ADT之栈的构建
最新推荐文章于 2024-04-26 19:52:04 发布