数据结构 -- 栈

本文详细介绍了栈这种数据结构,强调其后入先出的特点。栈可以看作受限的线性表,主要操作包括栈顶的入栈和出栈。栈的存储结构分为顺序存储和链式存储,两种实现方式分别基于动态数组Deque和链表List。栈作为高级容器,简化了程序设计,通过封装隐藏了部分实现细节,便于专注于问题核心。
摘要由CSDN通过智能技术生成

栈可以理解为一种受限的线性表,只能在表尾插入和删除元素。
栈有线性表的特点:每个元素都有且之后一个前驱节点和一个后继节点(第一个节点只有后继节点,最后一个节点只有前驱节点)
同时也有自身的特点:后入先出

术语

栈顶:允许插入和删除元素的一端
栈底:与栈顶相对的一端
入栈:插入数据操作
出栈:删除数据操作

抽象数据类型

ADT 栈(stack)
Data
	同线性表。元素具有相同的类型,相邻元素具有前驱和后继关系
Operation
	InitStack(*S)       // 初始化操作,建立一个空栈S
	DestroyStack(*S)    // 若栈存在,则销毁它
	ClearStack(*S)      // 将栈清空
	StackEmpty(S)       // 若栈为空返回true,否则返回false
	GetTop(S, *e)       // 若栈存在且非空,用e返回S的栈顶元素
	Push(*S, e)         // 若栈S存在,插入新元素e到栈S中并成为栈顶元素
	Pop(*S, *e)         // 删除S中栈顶元素,并用e返回其值
	StackLength(S)      // 返回栈S的元素个数
endADT

存储结构

同线性表一样,有两种存储结构:顺序存储结构和链式存储结构
栈较动态数组(Deque)、链表(List)来说属于高级容器,它可以在Deque或者List基础上进行实现
顺序存储结构的栈是在Deque基础上进一步封装实现的,链式存储结构的栈就是在List基础上实现的
核心函数如下:</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值