数据结构----10栈的基本概念与实现

栈的基本概念与实现

线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n = 0时线性表是一个空表。若用L命名线性表,则其一般表示为L = (a1, a2, … , ai, ai+1, … , an)

1. 栈的定义(后进先出)

  • 逻辑结构:操作受限的线性表,仅允许在栈顶进行插入(进栈)和删除(出栈)操作。
  • (Stack)是只允许在一端进行插入或删除操作线性表
  • 特性:后进先出(LIFO,Last In First Out)。
  • 关键术语
    • 栈顶:允许操作的一端;栈底:固定端,不允许操作;空栈:不含元素的栈。

2. 基本操作(和线性表对比)

  • 初始化(InitStack):创建空栈。
  • InitStack(&S):初始化栈。构造一个空栈 S,分配内存空间。
  • DestroyStack(&S):销毁栈。销毁并释放栈 S 所占用的内存空间。

InitList(&L)初始化表。构造一个空的线性表L,分配内存空间

DestroyList(&L)销毁操作。销毁线性表,并释放线性表L所占用的内存空间

  • 进栈(Push):栈未满时,在栈顶插入元素。

Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶。

ListInsert(&L,i,e)插入操作。在表L中的第i个位置上插入指定元素e。

  • 出栈(Pop):栈非空时,删除栈顶元素并返回。

Pop(&S,&x):出栈,若栈S非空,则弹出栈顶元素,并用x返回。

ListDelete(&L,i,&e)删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。

  • 获取栈顶元素(GetTop):读取栈顶元素但不删除。

GetTop(S, &x):读栈顶元素。若栈 S 非空,则用 x 返回栈顶元素

  • 判空(StackEmpty):判断栈是否为空。

LocateElem(L,e)按值查找操作。在表L中查找具有给定关键字值的元素。

GetElem(L,i)按位查找操作。获取表L中第i个位置的元素的值。

其他常用操作:

StackEmpty(S):判断一个栈 S 是否为空。若S为空,则返回true,否则返回false。

其他常用操作:

Length(L)求表长。返回线性表L的长度,即L中数据元素的个数。

PrintList(L)输出操作。按前后顺序输出线性表L的所有元素值。

Empty(L)判空操作。若L为空表,则返回true,否则返回false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值