第三章(1).顺序栈
来源:互联网 发布:mac安装包损坏 编辑:程序博客网 时间:2024/05/22 07:52
#include<stdio.h>
#include<stdlib.h>#define STACK_SIZE 100
#define STACKADD 10typedef int SElemType;
typedef struct
{
SElemType *base; //在栈构造之前和销毁之后,base的值为NULL
SElemType *top; //栈顶指针
int stacksize; //当前已分配的储存空间,以元素为单位
}SqStack;void InitStack(SqStack *S)
{
S->base = (SElemType *)malloc(STACK_SIZE*sizeof(SElemType));
if(!S->base)
{
exit(0);
}
S->top = S->base; //look careful! 只能是s->base 赋值给s->top.
S->stacksize = STACK_SIZE;
}SElemType GetTop(SqStack S,SElemType *e)
{
if(S.top == S.base) //若栈不空,则用e返回栈顶元素
{
exit(0);
}
*e = *(S.top - 1); //栈顶指针始终在栈顶元素的下一位置
return *e;
}void Push(SqStack *S, SElemType e) //把元素压入栈顶
{
if( (S->top - S->base) >= S->stacksize ) //栈满,追加存储空间
{
S->base = (SElemType *)realloc(S->base, (S->stacksize + STACKADD));
if(!S->base)
{
exit(0);
}S->top = S->base + S->stacksize;
S->stacksize += STACKADD;
}*(S->top++) = e;
}SElemType Pop(SqStack *S,SElemType *e) //取出栈顶元素,并返回
{
if(S->top == S->base)
{
exit(0);
}*e = *(--S->top); //一定要如此,不能e = (--S->top)
return *e;
}/*此处可以省略return语句,因为e为指针,可以返回获得的值。可如下所示
void Pop(SqStack *S, SElemType *e)
{
//无return语句
}
*/int StackEmpty(SqStack S)
{
if(S.base == S.top)
{
return 1;
}
return 0;
}int StackLength(SqStack S)
{
return (S.top - S.base);
}void ClearStack(SqStack *S) //注意清空与销毁的区别
{
if(S->base)
{
S->top = S->base;
}
}void DestroyStack(SqStack *S)
{
if(S->base)
{
free(S->base);
}
S->top = -1;
}void main(void)
{
SqStack *S;
SElemType *e;S = NULL;
e = NULL;
e = (SElemType *)malloc(sizeof(SElemType));
S = (SqStack *)malloc(sizeof(SqStack));InitStack(S);
Push(S,2);
// ClearStack(S);
// Pop(S,e);
printf("%d\n",Pop(S,e));
}
- 第三章(1).顺序栈
- 第三章顺序栈
- 第三章 顺序结构
- (实验三)《数据结构》第三章 顺序栈与链栈的验证
- 《数据结构》严蔚敏版(java解)——第三章 栈和队列01 顺序栈操作
- 《数据结构》第三章 栈和队列 实验(顺序栈)
- 《数据结构》严蔚敏版(java解)——第三章 栈和队列03 顺序队列操作
- C++数据结构路程:第三章一阶段,顺序栈
- 第三章:顺序栈及其应用之一---表达式求值
- 第三章:顺序栈及其应用之二---括号匹配
- 第三章:顺序栈及其应用之三---数制转换
- 数据结构学习之路-第三章:顺序栈
- 数据结构学习之路-第三章:顺序栈
- 第三章 线性表(顺序存储结构和单链表)
- 第三周项目(7):顺序表应用(1)
- 第三周项目(1):顺序表的基本运算
- (第三周项目1)顺序表的基本运算
- 第三周项目4-顺序表应用(1)
- 一篇武汉大学毕业生的反思
- 再次写给我们这些浮躁的程序员(转载)
- 不要自称为程序员 (转载)
- 第二章(6).一元多项式的表示及相加
- Python编码相关问题 Unicode UTF-8 encode() decode()
- 第三章(1).顺序栈
- 第三章(2).链栈
- 第三章(3).链队列
- 第三章(4).循环队列
- 第三章(5).栈的应用举例(1)
- PL/SQL Developer 7.1.5 注册版
- 第三章(6).栈的应用举例(2)
- 第三章(7).栈的应用举例(3)
- 第四章(1)定长顺序存储表示