python中的栈结构,python中的栈结构实现删除重复相邻两项
Python中的Stack 1,也称为Stack,是一个线性表,操作有限。限制是只允许在表的一端执行插入和删除操作。这一端叫做栈顶,另一端叫做栈底。栈相当于一个有底的桶。出栈的过程就像倒水的过程,先入后出。
2.栈是操作系统为某个进程或线程(操作系统中支持多线程的线程)建立的存储区域。
一、对栈的理解
堆栈就像浏览器上的收藏夹。人们把自己经常访问的网站地址放在收藏夹里,但真实的网页信息是存储在网页所在公司租用的服务器里,而不是收藏夹里。这里的服务器如栈,收藏夹如栈。Favorite (stack)只是记住了网页的地址,它只是引用了[服务器](堆)中的网页信息。
2.什么是堆栈?
堆栈是一种数据结构,其操作将受到限制。简单来说,堆栈是一种存储数据的方式。在这种数据存储模式下,存储或读取数据的操作将受到相关规则的限制。
栈的存储规则是后进先出,这是一种特殊的数据结构。
栈是一种特殊的线性表,只能在一端插入或删除。这一端称为栈顶,是浮动端。另一端称为堆栈的底部,是固定端。
第一个条目元素被推到堆栈的底部,最后一个条目元素在堆栈的顶部。当需要读取数据时,元素会从栈顶依次弹出,最后一个数据最后出来。
如果栈中元素个数为0,则为[空栈],插入操作称为[push],删除操作称为[push]。
第三,“堆栈”数据结构具有以下特征:
Stack相当于一个一端开口一端封闭的容器;数据可以存储在栈中,将数据移动到栈中的过程称为push-in,也叫压入。堆栈只能对其堆栈顶部的数据进行操作;栈是一种先进后出的数据结构。堆叠的一端是开放的,另一端是封闭的。开放端可以输入和输出数据,而封闭端不能输入或输出数据。封闭端的位置称为堆叠的底部。开始时,如果堆栈中没有数据,堆栈的顶部和底部重合。输入数据后,栈顶会逐渐上移,而栈底会一直在封闭端的位置。
第三,栈结构的实现
堆栈可以通过顺序表或链表来实现。
四、堆栈的操作
Stack()创建一个新的空栈push(item)在栈顶添加一个新的项pop()弹出栈顶元素peek()返回栈顶元素,但不删除is_empty()判断栈是否为空size()返回栈中元素的个数——为了更好的理解栈的存储结构,尽量抽象出栈的存储结构。形成“栈的一般存储结构图”。如果堆栈底部的下标标记为-1,那么数据1位置的下标为0,数据2位置的下标为1,以此类推,数据n位置的下标为n-1。其实data 1 ~ data n存储最基本的形式是list,但是这个list中的数据操作是有限制的,只能操作list中的最后一个元素。
-当通过Python代码进行栈的基本应用时,栈的基本形式可以看作是一个链表,但是需要限制这个链表的数据操作,比如只在链表的一端插入和删除数据。
堆栈的完整代码实现:
#堆栈的实现
类堆栈():
Def __init__(self,size): #在类中建立一个初始化方法
Self.data=[null for I in range (0,size)] #生成一个指定长度(size)的列表,列表中每个元素的数据初始为null。
Self.size=size #初始化堆栈的大小
Self.top=-1 #初始化堆栈的顶部位置。
定义推送(自身,内容):#推送
如果自我。完整():
打印(堆栈已满,不允许堆栈!)
否则:
self.top=self.top 1
Self.data[self.top]=content #将新元素放入堆栈当前顶部位置所指向的存储单元中。
Def out(self): #出栈
如果自我。Empty():
打印(堆栈是空的,不允许弹出!)
否则:
打印(self.data[self.top])
Self.data[self.top]=null #通过指定特定值(如 null )来模拟清空操作
self.top=self.top-1
Def Full(self): #确定堆栈是否已满。
If.top==self.size-1: #用size表示栈的大小,那么栈满时栈顶的下标是size-1。
返回True
否则:
返回False
Def Empty(self): #确定堆栈是否为空。
If.top==-1: #当栈顶为-1时,判断栈为空。
返回True
否则:
True #创建一个大小为4的堆栈,将数据依次放入堆栈。
s=堆栈(4)
s . push( z code )
推送(应用程序)
s.push(Hhhhh )
s.push(粉色)
#此时堆栈中有四条数据,不能再放入堆栈。
s.push(确定)
堆栈已满,不允许堆栈!
s.out()
粉红色
s.out()
Hhhhh
s.out()
应用
s.out()
zcoder
s.out()
堆栈为空,不允许弹出!
#您总是可以使用Empty()和Full()方法来分别确定堆栈是空的还是满的。
南空()
真实的
南完整()
Python 1中的真正堆栈组合。内存中的栈和数据结构中的栈不是一个概念。可以说内存中的栈是一个真实的物理区域,而数据结构中的栈是一个抽象的数据存储结构。2.内存空间在逻辑上分为代码区、静态数据区和动态数据区三部分,动态数据区又分为堆栈区和堆区。3.代码区:存储方法体的二进制代码。高层调度(作业调度)、中层调度(内存调度)和低层调度(进程调度)控制代码区内执行代码的切换。4.静态数据区:存储全局变量、静态变量和常量,包括最终修改的常量和字符串常量。自动系统分配和恢复。5.堆栈区:存储运行方法的参数、局部变量和返回值。系统自动分配和回收。6.堆区:new对象的引用或地址存储在堆区,指向存储在堆区的对象的真实数据。【创建对象时,变量名是指对象;被引用对象的地址存放在栈区,地址指向的对象存放在堆区】期待陌生,拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。