C语言实现堆栈数据结构的问题
我这里写好一个顺序存储的堆栈, 写得好菜, 请高手指点:
/* Stack.h */
#ifndef STACK_H
#define STACK_H
#define STACK_MAX_SIZE 100 /* 堆栈最大存储空间 */
typedef int ElemType; /* 数据元素类型 */
typedef struct {
ElemType data[STACK_MAX_SIZE]; /* 为栈分配一个数组 */
int top; /* 栈顶"指针" */
} Stack;
/*---------堆栈基本操作的函数定义----------*/
/* 置S为空栈 */
void InitStack(Stack *s)
{
s->top = -1;
}
/* 判断是否空栈, 是则返回1, 否则返回0 */
int IsEmpty(Stack *s)
{
return s->top == -1;
}
/* 判断是否满栈, 是则返回1, 否则返回0 */
int IsFull(Stack *s)
{
return s->top == STACK_MAX_SIZE - 1;
}
/* 进栈, 成功返回1, 否则返回0 */
int Push(Stack *s, ElemType x)
{
if (IsFull(s)) return 0;
s->data[++s->top] = x;
return 1;
}
/* 出栈, 返回栈顶元素 */
void Pop(Stack *s)
{
return s->data[s->top--];
}
/* 返回栈顶元素 */
ElemType GetTop(Stack *s)
{
return s->data[s->top];
}
#endif
上面的堆栈有几个问题没法解决, 像存储空间不够, 出栈函数Pop()不能返回出错时的情况.....
烦请大家如果有堆栈相关的代码贴出来让小弟学习一下,链式堆栈, 顺序堆栈都可以
没代码也请尽量提出建议和思路!!!
谢谢