您的位置:首页 > 其它

抽象数据类型ADT之栈的构建

2017-10-16 22:03 549 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: