数据结构(C语言) 顺序栈的表示和实现

栈(stack)栈是一个特殊的线性表,是限定仅在一段(通常是表尾)进行插入和删除操作的线性表。具有后进先出(Last In First Out)的结构,简称LIFO结构。
表尾称为栈顶(Top),表头称为栈底(Base)

栈的顺序存储表示
typedef struct {
   
	SElemType* base;	//在栈构造之前和销毁之后,base的值为NULL
	SElemType* top;	//栈顶指针
	int stacksize;	//当前已分配的存储空间,以元素为单位
}SqStack;
入栈出栈操作示意图:
基本操作的函数原型说明
//----基本操作的函数原型说明----
Status InitStack(SqStack& S);
//构造一个空栈S
Status StackEmpty(SqStack S);
//若栈为空,返回TRUE,否则返回FALSE
int StackLength(SqStack S);
//求栈长
Status ClearStack(SqStack S);
//清空顺序栈
Status DestroyStack(SqStack& S);
//销毁栈S,S不再存在
Status Push(SqStack& S, SElemType e);
//顺序栈的入栈
Status Pop(SqStack& S, SElemType& e);
//顺序栈的出栈
Status GetTop(SqStack S, SElemType& e);
//若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR
void PrintStack(SqStack& S);
//打印栈
基本操作的实现
//----基本操作的算法描述(部分)----
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;
}//InitStack
Status StackEmpty(SqStack S)//判断栈空
{
   
	if (S.top == S.base)
		return TRUE;
	else
		return FALSE;
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值