栈的顺序存储结构和链式存储结构

本文介绍了栈的两种存储结构——顺序存储和链式存储。顺序存储结构中,进栈和出栈操作的时间复杂度为O(1),链式存储同样具有相同的时间复杂度。此外,还讨论了两个栈共享存储空间的情况,如何在数组中实现两栈共享且独立操作的方法。
摘要由CSDN通过智能技术生成
     栈(stack)很多人都不会太陌生,说到栈大家一定会想到一句话:后进先出(Last In First Out)。这句话就是栈的一个本质特点,其实栈就是一个只能在一端进行插入、删除的特殊的线性表。栈有栈底和栈顶,元素从栈顶出。

    下面首先说说栈的顺序存储结构。即用一个StackSize大小的数组来存储整个栈,那么下标为0的元素就是栈底元素,用top变量来指示栈顶元素,因为数组的大小为StackSize,所以0<= top <StackSize。当top=0时表示该栈只有一个元素,top=StackSize-1时表示栈满,top=-1时,表示栈为空栈。

栈的顺序存储结构定义如下:
typedef int SElemType ;

typedef struct

{

 SElemType data[MAXSIZE] ;

 int top ;

}SqStack ;

顺序存储结构下的进栈操作:

Status Push(SqStack * S , SElemType e)

{

   if( S->top == MAXSIZE)                 

           return ERROR ;         //满栈

   S->top++ ;

   S->data[S->top] = e ;

   return OK ;

}

顺序存储结构下的出栈操作:

Status Pop(SqStack *S , SElemType e)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值