栈操作的验证(数据结构作业)

来源:百度知道 编辑:UC知道 时间:2024/06/18 15:42:50
1,对于顺序栈,链栈的基本操作进行验证。
2.考虑各种可能情况
3.测试数据自拟

//----- 栈的顺序存储表示 -----
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
Status InitStack (SqStack &S)
{// 构造一个空栈S
S.base=(ElemType*)malloc(STACK_INIT_SIZE*
sizeof(ElemType));
if (!S.base) exit (OVERFLOW); //存储分配失败
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return OK;
}
Status Push (SqStack &S, SElemType e) {
if (S.top - S.base >= S.stacksize) {//栈满,追加存储空间
S.base = (ElemType *) realloc ( S.base,
(S.stacksize + STACKINCREMENT) *
sizeof (ElemType));
if (!S.base) exit (OVERFLOW); //存储分配失败
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = e;