问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

栈是什么意思?

发布网友 发布时间:2022-04-25 17:41

我来回答

7个回答

懂视网 时间:2022-05-10 06:56

栈(stack)是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。

da3a3ab4a3e1d783978f0d71b0a8cae.png

就像图片所描述的,栈s=(a1,a2,…an-1,an)。最后入栈的是an,最先出栈的也是an。所以栈符合LIFO原则。

LIFO

LIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。

栈之所以重要是因为它能反转项的顺序。插入跟删除顺序相反。

最典型的例子就是每个 web 浏览器都有一个返回按钮。当你浏览网页时,这些网页被放置在一个栈中(实际是网页的网址)。你现在查看的网页在顶部,你第一个查看的网页在底部。如果按‘返回’按钮,将按相反的顺序浏览刚才的页面。

Python实现栈

# 创建一个空的新栈。 它不需要参数,并返回一个空栈。
class Stack:
 def __init__(self):
 self.items = []
 
 # 测试栈是否为空。不需要参数,并返回布尔值。
 def isEmpty(self):
 return self.items == []
 
 # 将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
 def push(self, item):
 self.items.append(item)
 
 # 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
 def pop(self):
 return self.items.pop()
 
 # 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。
 def peek(self):
 return self.items[len(self.items)-1]
 
 # 返回栈中的 item 数量。不需要参数,并返回一个整数。
 def size(self):
 return len(self.items)

将十进制数转换为任意进制数

知道了栈的基本操作就做一个小项目来练练手。将十进制数转换为任意进制数,其实最高也就十六进制(还有更高进制吗)。

def baseConverter(n, base):
 
 # n是输入的十进制数字,base为要转化的进制数
 digits = '0123456789ABCDEF'
 
 #创建一个新栈
 s= Stack()
 
 # 将每次计算所得的余数添加进栈
 while n> 0:
 rem = n % base
 s.push(rem)
 n = n // base
 
 # 将余数倒序排列至新字符串 
 newString = ''
 while not remstack.isEmpty():
 newString = newString + digits[remstack.pop()]
 
 return newString

热心网友 时间:2022-05-10 04:04

栈,又名堆栈,它是一种运算受限的线性表。其*是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。

向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

扩展资料:

1、栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

2、栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的,详见第3点。

堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

参考资料:百度百科-栈

热心网友 时间:2022-05-10 05:22

栈(stack)又名堆栈,它是一种运算受限的线性表。其*是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

热心网友 时间:2022-05-10 06:57

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。 栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO--Last IN First Out表)。 栈可以用来在函数调用的时候存储断点,做递归时要用到栈!
上面已经说得很清楚了
虽然是复制的

热心网友 时间:2022-05-10 09:05

要想清楚了解,你要研究:
1、栈的定义;
2、栈在内存中是怎样使用的;

热心网友 时间:2022-05-10 11:30

http://ke.baidu.com/view/38877.htm?fr=ala0_1

热心网友 时间:2022-05-10 14:11

栈就像是排队买东西一样,先排的先买
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么会甲状腺肿大 大学生去晋城富士康能学习到东西吗?我说的是技术上的?请往届的菁干班... 富士康(晋城)科技工业园怎么样,我是应届本科生,想应聘这个,有没有知... 郭庆林人物简介 河北大学学报(自然科学版)版杂志征稿信息 河北大学学报(自然科学版)杂志投稿信息 河北大学学报自然科学版 红警任务包 开机按Delete会出现的菜单,但是现在我开机不按Delete也出现怎么回事?要... 胃镜当时能出结果吗 栈的读音是什么 “栈”怎么读 “栈”字怎么读? 计算机里栈是什么意思啊? 电脑脱机状态是什么意思?怎么解决? 笔记本脱机是什么? 谁知道,华为平板m6作为作为商用,支持银行的U盾吗? 凹凸世界京弥的神秘石板上写了什么? 京弥喜欢吃什么凹凸世界? 200分为我儿子起名!!! 星潮配过什么? 凹凸世界破茧金能抽吗 凹凸世界第三季京弥的bgm是什么? 微信登录的快手,登录不上了,登录需要验证码,可是以前的号已经不用了,怎么办? 凹凸世界人设什么时候全公布的?为什么2017就有人刷京弥和神近耀了? 手机号已经销毁了(补办不了),快手登录需要验证码,登录不了,怎么办? 快手登不了,必须要输入手机验证码,但是手机号早已经用不了了,已经成空号,怎么办?求解,怎么找回我的 京弥 用作名字用日语咋读(要读音哦) 凹凸世界里京弥的人设? 快手登入不了,输入完验证码显示操作成功可是还是没进去 栈的基本概念是什么? 什么是栈?请说明详细一些 程序开发中什么是栈是怎么理解的? C语言中,什么是栈,什么是堆 编程中的"栈"是什么意思 栈的操作原则是什么? 栈的特点是? 穿墙力好的路由器是什么牌子 无线路由器哪个牌子好穿墙信号强 什么牌子路由器好用,穿墙好 什么牌子的路由器穿墙信号好? 什么牌子的路由器好用穿墙效果好 家里的网速太慢,最里面的房间一点信号都不好,想换一个好的穿墙路由器,请教哪款,哪个牌子的好? 什么牌子的无线路由器穿墙效果最好? 无线路由器什么牌子的穿透力强 无线路由器穿墙力哪个牌子比较好 大家都用什么牌子的无线路由器 穿墙效果好 煮糖心鸡蛋怎么做 怎样打荷包蛋? 谢霆锋说糖心荷包蛋怎么煮