前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Python实现顺序栈

利用Python实现顺序栈

作者头像
算法与编程之美
发布2023-11-27 14:50:45
1210
发布2023-11-27 14:50:45
举报
文章被收录于专栏:算法与编程之美

1 问题

在常用的数据结构中,有一批结构被称为容器——栈与队列。那该怎么利用Python学习栈这种结构的特性并用Python实现其相关操作呢?

2 方法

栈相对于是一个容器,而这个容器里包含的是一些元素。同时,栈是保证元素后进先出关系的结构。栈主要用来保存计算过程中的临时数据,这些数据是计算中发现或者产生的,在后面的计算中可能需要使用到它们。

栈也常常用来作为一种缓冲存储结构,用来存储工作中产生的暂时不用或者用不完的数据。

  1. 在Python中,我们可以用list来实现顺序栈,由于list才用动态顺序表技术,用它作为栈的表不会满。
  2. 同时,我们使用Python的内置函数append()和pop()实现压栈和弹栈的操作。

代码清单 1

代码语言:javascript
复制
class stack:
def __init__(self, maxsize):
self.max = maxsize
self.elem = [None] * self.max
self.top = 0
self.base = 0
def push(self,elem):
if self.top - self.base == self.max:
raise Exception("The stack is full!")
self.elem[self.top] = elem
self.top += 1
def pop(self):
if self.top == self.base:
raise Exception("The stack is empty")
self.top -= 1
e = self.elem[self.top]
return e
def get_top(self):
return self.elem[self.top - 1]
data = list(map(int,input("Please input a series of datas:").split(" ")))
s = stack(len(data))
for i in range(len(data)):
s.push(data[i])
for i in range(s.top - s.base):
print(s.elem[i],end=" ")
print("\n")
e = s.get_top()
print("The top elem of the stack is: %d" % e)
print("\n")
for i in range(s.top - s.base):
s.pop()
print("After popping the stack %d times,the stack is:" % (i + 1),end=" ")
for j in range(s.top - s.base):
print(s.elem[j],end=" ")
print("\n")

3 结语

针对利用Python实现顺序栈这一问题,提出了利用list动态顺序表的特性实现顺序栈和利用Python的内置函数append()和pop()实现压栈和弹栈的操作,证明该方法是有效的。本文代码具有较好可使用性,但在高时间性能上仍有欠缺,将来可尝试其他方法改善此问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档