有关堆栈的问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:42:04
#include "stdio.h"
#include "stdlib.h"
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define ERROR -1
typedef int SElemType;
#define OK 0
typedef struct{
SElemType *base;//在构造之前和销毁之后,base的值为NULL
SElemType *top;//栈顶指针
int stacksize;//当前已分配的存储空间,以元素为单位
}SqStack;

//创建堆栈
int InitStack(SqStack &S){
S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base) return ERROR;
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return 1;
}//InitStack

//插入元素e为新的栈顶元素
void Push(SqStack &S,SElemType e){
if(S.top-S.base>=S.stacksize){//栈满,追加存储空间
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}//if
*S.top=e;
S.top++;

}//push

//若堆栈不空,则删除S的

if(S.top=S.base)
{ printf("\nempty stack");
return OK;
}//if
其实都是这部分的问题
应该是if(S.top==S.base),不然if条件就一直成立了,就输出empty stack了
堆栈操作本身没什么问题

你这到底是c程序,还是c++程序,说是c,里面有引用,说是c++,又不用cout等等。
发现两个低级错误,if判断用的全是=,而不是==,其他的没看