新手学习数据结构时,顺序栈实现时运行总是停止工作,编译又没有错误,求大神解释一下

lzydelzy 2014-05-14 09:32:36
#include<malloc.h> /* malloc()等 */
#include<limits.h>/* INT_MAX等 */
#include<stdio.h> /* EOF(=^Z或F6),NULL */
#include<stdlib.h> /* atoi() */
#include<io.h> /* eof() */
#include<math.h> /* floor(),ceil(),abs() */
#include<process.h> /* exit() */
/* 函数结果状态代码 */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
typedef char SElemType;
//*****************************************************************************//
/* 顺序表示的栈的存储结构*/
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
SElemType *base; /* 栈底room */
SElemType *top; /* 栈顶room */
int stacksize; /* 栈的当前容量 */
}SqStack;


//*****************************************************************************//
/* 顺序表示的栈的基本操作 */
Status InitStack(SqStack *S)
{
S->base=(SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S->base)exit(OVERFLOW);
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return OK;
}


Status GetTop(SqStack S,SElemType e)
{
if(S.top==S.base) return ERROR;
e=*(S.top-1);/*因为top指针指向栈顶元素的上一个位置,所以此处需要-1*/
return OK;
}


Status Push(SqStack *S,SElemType e)
{
if(S->top-S->base>=S->stacksize){//栈满//
S->base=(SElemType * )realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S->base)exit(OVERFLOW);
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREMENT;
*S->top++ =e;
return OK;
}
}
Status Pop(SqStack *S,SElemType *e)
{
if(S->top==S->base) return ERROR;
e= * (S->top-1);
S->top--;
return OK;
}
void main(){
SqStack *S;
InitStack(SqStack S);
}
运行时XXX.exe工作停止不知道怎么错了。。。
...全文
140 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzydelzy 2014-05-14
  • 打赏
  • 举报
回复
嗯,谢谢了,因为只简单学过c++,数据结构又是c语言版的,所以有时候转不过来,还是得多练习,多谢了
图灵狗 2014-05-14
  • 打赏
  • 举报
回复
以下的用法不正确,且S没有分配空间,结果难料: SqStack *S; InitStack(SqStack S); 应该改为: SqStack S; InitStack(&S); 另外学数据结构的时候,一定要多去调试,尤其是单步调试。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧