| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 《大话数据结构》第四章学习笔记(一) -> 正文阅读 |
|
[数据结构与算法]《大话数据结构》第四章学习笔记(一) |
栈栈的定义(后进先出)定义
?我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何 数据元素的栈称为空栈。栈又称为后进先出的线性表,简称LIFO结构。
栈的插入操作,叫作进栈,也称压栈、入栈。 栈的删除操作,叫作出栈,也称弹栈。
进栈出栈变化形式牢记一点,栈是后进先出的。 打个比方:1,2,3按顺序进栈,那么合理的出栈顺序有很多种 比如:3,2,1或者1,2,3或者2,1,3或者1,3,2或者2,3,1 但是像3,1,2这种出栈顺序就不可能,因为如果3先出栈,那么意味这1,2已经入栈,那么2就一定要比1先出栈。 这让我想起我之前做了一个判断出栈的合法顺序的题目; 例题:输入n,和一个序列,代表需要判断的出栈顺序,如果合理输出yes,不合理输出no 样例: 输入:3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??输出:yes ? ? ? ? ? ?3 2 1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
栈的顺序存储结构及实现栈的顺序存储结构栈的顺序存储结构是线性表顺序存储的简化,简称为顺序栈。用数组来实现。 定义top来表示栈顶元素在数组中的位置,top初始值为-1,当栈中有一个元素时top=0; ? ? ? ? ? ? ? ? ?进栈与出栈
两栈共享空间当两个具有相同数据类型的栈,我们可以考虑让两栈共享一个空间。 只需要让top1指向数组的始端,让top2指向数组的终端,然后向中间靠拢,当top1+1=top2时栈满。 栈的链式存储结构及实现栈的链式存储结构(简称链栈)用链表来实现栈,此时栈顶指针其实就是链表的头指针,将栈顶放在链表的头部。 对于链栈来说,基本不存在栈满的情况,除非内存已经没有使用空间。空栈时即为top=NULL时。 链栈的操作与绝大部分的单链表类似,只是在插入和删除上特殊一点。 出栈和入栈
如果栈的输赢过程中元素变化不可预料,有时很小,有时非常大,那么最好是用链栈,反之,如果它的变化在可控范围内,建议使用顺序栈会更好一点。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:43:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |