数据结构--栈与队列

一、栈(Stack
1.概述(逻辑结构)
后进先出
的线性表,只允许在一端进行插入或删除操作。栈顶指针标示栈内元素。
栈的核心操作是进栈出栈操作。

A 栈的定义
定义:只允许在一端进行插入或删除的线性表
特点:后进先出的线性表。
栈顶 S.top。由栈顶指针指示。
顺序栈的栈顶指针记录数组位置的一个整型变量,初始S.top = -1
链栈的栈顶指针记录栈顶元素所在元素的指针,初始S.top = h
物理结构分为:顺序栈链栈

B 栈的数学性质--卡特兰数又称卡塔兰数
当n个编号元素以某种顺序进栈,并可在任意时刻出栈
所获得的编号元素排列的数目N恰好满足Catalan函数的计算,即N=C(2n,n)/(n+1)

C 栈的应用
进制转换、表达式求值、中缀表达式->后缀表达式、函数调用、函数递归。

2.基本操作
A 初始化一个空栈。InitStack(&S)
B 销毁栈,并释放栈S占用的存储空间。ClearStack(&S)
C 判断一个栈是否为空。StackEmpty(S)
D 元素x进栈。Push(&S,x)
E 栈顶元素出栈。Pop(&S,&x)
F 读取栈顶元素。GetTop(S,&x)

对栈采用顺序存储或链式存储,需要考率各个条件与算法流程。
栈空条件、栈满条件、进栈操作、出栈操作

3.顺序栈
A 顺序存储类型  SqStack

存放栈内元素的连续空间:ElemType data[MaxSize];
栈顶指针:int top;

栈顶指针:S.top,初始设置为S.top = -1;(空栈)
栈顶元素:S.data[S.top]。

进栈操作:栈不满时,栈顶指针先加1,再送到栈顶元素。
出栈操作:栈非空时,栈顶元素出去,栈顶指针减1.

栈空条件S.top = -1;
栈满条件S.top = MaxSize - 1;
栈长S.top+ 1

顺序栈的缺点:顺序栈的内存空间确定,栈操作受数组上界的约束,易发生栈上溢
栈满就是一种继续入栈就会上溢的状态,对下溢就是栈空的时候继续出栈所造成的结果。

B 基本运算
a.初始化 InitStack(&S) 

b.判栈空 StackEmpty(S)

c.进栈 Push(&S,x)
栈顶指针先+1;元素再进栈。

d.出栈Pop(&S,&x)
元素先出栈,栈顶指针-1;

e.读取栈顶元素  GetTop(S,&x)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值