数据结构----栈和队列1

目录

一、栈

(一)、定义

1、定义:

2、逻辑结构:

3、存储结构:

4、运算规则:

5、实现方式:

(二)、分类

1、顺序栈

(1)、顺序栈的表示

 (2)、顺序栈初始化

(3)、判断顺序栈是否为空

(4)、顺序栈进栈

(5)、顺序栈出栈

2、链栈

(1)、链栈的表示

(2)、链栈初始化

(3)、链栈进栈

(4)、链栈出栈

(5)、取出链栈栈顶元素

(三)、栈与一般线性表的区别

课后题

1. 若让元素 1,2,3,4,5依次进栈,则出栈次序不可能出现( )这种情况。 

2. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则 pi 为______

3. 链式栈结点为(data, next),top指向栈顶,若想删除栈顶结点,并将删除结点的值保存到x中,则应执行操作( )。


一、栈

(一)、定义

栈是限定仅在表尾进行操作的线性表。设栈S=(a1,a2,…an),则a1称为栈底元素,an为栈顶元素。

栈中元素按a1,a2,…an的次序进栈,出栈的第一个元素应为栈顶元素

即栈的修改是按后进先出先进后出的原则进行的。

“进” =压入=PUSH()

“出” =弹出=POP()

1、定义:

只能在表的一端(栈顶)进行插入和删除运算的线性表

2、逻辑结构:

与线性表相同,仍为一对一关系

3、存储结构:

用顺序栈或链栈存储均可,但以顺序栈更常见

4、运算规则:

只能在栈顶运算,且访问结点时依照后进先出(LIFO)或先进后出(FILO)的原则

5、实现方式:

关键是编写入栈和出栈函数,具体实现依顺序栈或链栈的不同而不同

基本操作有入栈、出栈、读栈顶元素值、判断栈满、栈空等

(二)、分类

1、顺序栈

(1)、顺序栈的表示

采用静态一维数组来存储栈。

栈底固定不变的,而栈顶则随着进栈和出栈操作变化的

栈底固定不变的;栈顶则随着进栈和出栈操作而变化,用一个整型变量top(称为栈顶指针)来指示当前栈顶位置。

top=-1表示栈空的初始状态,每次top指向栈顶在数组中的存储位置。

结点进栈:首先执行top1,使top指向新的栈顶位置,然后将数据元素保存到栈顶(top所指的当前位置)。

 结点出栈:首先把top指向的栈顶元素取出,然后执行top1,使top指向新的栈顶位置。

 (2)、顺序栈初始化

构造一个空栈

class SeqStack:
    def __init__(self,max):
        # 顺序栈的最大容量
        self.max = max
        # 当栈为空时,栈顶指针指向-1
        self.top = -1
        # 存储栈元素的数组
        self.stack = [None for i in range(self.max)]
(3)、判断顺序栈是否为空

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值