数据结构 顺序栈的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:35:09
为什么我的程序达不到想要的目的呢 老是错(不是语法的错误)请各位大侠帮忙看一下哦 谢谢

//创建栈并输出其中元素
#include "stdio.h"
#include "iostream.h"
#include "stdlib.h"
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define STACKINCREMENT 20
#define STACK_INIT_SIZE 50
typedef struct{
char data;
}Node;
struct SqStack{
Node * base; // 在栈构造之前和销毁之后,base的值为NULL
Node * top; // 栈顶指针
int stacksize; // 当前已分配的存储空间,以元素为单位
}; // 顺序栈
int InitStack(SqStack &S){ // 构造一个空栈S
if(!(S.base=(Node *)malloc(STACK_INIT_SIZE*sizeof(Node))))
exit(OVERFLOW); // 存储分配失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
}
int Push(SqStack &S,Node e){ // 插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize) // 栈满,追加存储空间
{
S.base=(Node *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(Node));
if(!S.base)
exit(OVERFLOW); // 存储分配失败

以下结果VC6 + WinXP调试通过:

void main()
{
SqStack s;
Node e;

InitStack( s ); // 这里要初始化,为s分配存储空间

……
}

测试:

输入数据:
a
6
G
%
.

%
G
6
a Press any key to continue

把InitStack(s);放在cout<<"输入数据:"<<endl; 之前