python数据结构与算法 4栈的实现

数据结构与算法:Python语言实现--Python入门 数据结构与算法 Python 语言实现 课后答案 这是《数据结构与算法 Python 语言实现》 (古德里奇)版,每一章书后习题和解答,我已经买了这本书, 因为想在看完每一章后,完成习题,所以记录下来! 这篇文章是第一章的习题内容!因为题目太长,懒得自己书写,我拍下了习题,并且直接用截图作为题目! 阅读详情

Remember thatnothing happens when we click the run button other thanthe definition of the class. We must create a Stack object and thenuse it. ActiveCode2 showsthe Stack class in action aswe perform the sequence of operations from Table1.

上面代码仅仅是stack类的实现,如果运行的话,什么反应也没有。所以下面的代码,就是创建一个栈对象,并加入操作方法,就如表1中所作的操作一样。

s=Stack()

print(s.isEmpty())

s.push(4)

s.push('dog')

print(s.peek())

s.push(True)

print(s.size())

print(s.isEmpty())

s.push(8.4)

print(s.pop())

print(s.pop())

print(s.size())


 

It isimportant to note that we could have chosen to implement the stackusing a list where the top is at the beginning instead of at theend. In this case, the previous pop and append methods would nolonger work and we would have to index position 0 (the first itemin the list) explicitly using pop and insert. The implementation isshown in CodeLens 1.

注意,我们也可以选择列表的头(左侧)作为栈顶,这样,前面的pop和append方法就不能用了,而必须指定索引0(列表的第一个项)以便对栈内数据操作。如下面代码段:

classStack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items ==[]
def push(self, item):
self.items.insert(0,item)
def pop(self):
returnself.items.pop(0)
def peek(self):
return self.items[0]
def size(self):
returnlen(self.items)
 
s = Stack()
s.push('hello')
s.push('true')
print(s.pop())


 

This ability to change the physical implementationof an abstract data type while maintaining the logicalcharacteristics is an example of abstraction at work. However, eventhough the stack will work either way, if we consider theperformance of the two implementations, there is definitely adifference. Recall that the append and pop() operations were bothO(1). This means that the first implementation will perform pushand pop in constant time no matter how many items are on the stack.The performance of the second implementation suffers in that theinsert(0) and pop(0) operations will both require O(n) for a stackof size n. Clearly, even though the implementations are logicallyequivalent, they would have very different timings when performingbenchmark testing.

对抽象数据类型的实现方式的变更,仍能保持数据的逻辑特性不变,就是“抽象”的实例。两种栈的方式都能工作,但性能表现却有很大的不同。Append()和pop()都是O(1),这意味着,不管栈内有多少数据项,第一种实现的性能是常数级的,第二种实现的insert(0)和pop(0)却需要O(n)。很明显,逻辑上是等同的,但在性能基准测试时,时间测试的结果是非常之不同的。

Self Check

自测题

stk-1: Given the following sequence of stack operations,what is the top item on the stack when the sequence iscomplete?

经过以下操作后,栈顶数据项是哪个?

 

m = Stack()

m.push('x')

m.push('y')

m.pop()

m.push('z')

m.peek()

stk-2: Given the following sequence of stack operations,what is the top item on the stack when the sequence iscomplete?

第二题:经以下测试,栈顶元素是哪个?

m = Stack()

m.push('x')

m.push('y')

m.push('z')

whilenotm.isEmpty():

  m.pop()

  m.pop()

Write afunction revstring(mystr) thatuses a stack to reverse the characters in a string.

第三题,为以下代码补充一个函数 revstring(mystr),实现将一个字符串翻转顺序。

from testimport testEqual

frompythonds.basic.stack import Stack

defrevstring(mystr):

   #在此处补充代码

testEqual(revstring('apple'),'elppa')

testEqual(revstring('x'),'x')

testEqual(revstring('1234567890'),'0987654321')

数据结构与算法(Python语言实现)算法题目(总集篇) 集合了我学习算法的所有题目,都已经分类归档好! 阅读详情

相关推荐

python每日算法 | 数据结构基础:栈与队列以及经典的迷宫问题

python每日算法:数据结构基础知识(一):栈与队列以及最经典的迷宫问题

REPCHAOCHAO的博客 1584

isEmpty()

if(null != array&&!array.isEmpty()) { } 正常 if(array.isEmpty()){ } 空指针异常 isEmpty() 用于判断List内容是否为空,即list里一个元素也没有,但是必须在 List本身不是空的引用的情况下才行。 即对象本身不能是空对象。 null一般判断该List的引用也空的情况下 例如: List list1 =null; List list2=new ArrayList(); System.out.println(li

zn0999的博客 1960

Python数据结构与算法(3.2)——栈相关应用与习题

我们已经学习了栈的相关概念以及其实现,同时也了解了栈在实际问题中的广泛应用,本节的主要目的是通过栈的相关习题来进一步加深对栈的理解,同时能够利用栈降低一些复杂问题解决方案的时间复杂度。

盼小辉丶的博客 3万+

(转)Java 中关于String的空对象(null) ,空值(empty),空格

原文出处:Java 中关于String的空对象(null) ,空值(empty),空格 定义空对象:String s = null;空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例化该对象,因此,空对象在调用所有对象方法时候都会抛出异常,如s.length(), s.isEmpty()等方法。空值:String k = "";空值是指一个字符床对象已经实例化,即系统已...

weixin_30384217的博客 431

Python数据结构与算法(3.1)——栈

栈和队列是在程序设计中常见的数据类型,从数据结构的角度来讲,栈和队列也是线性表,是操作受限的线性表,它们的基本操作是线性表操作的子集,但从数据类型的角度来讲,它们与线性表又有着巨大的不同。本节将首先介绍栈的定义和其不同实现,并且给出栈的一些实际应用。

盼小辉丶的博客 3万+

医学影像AI的幻觉问题与CCD解决方案

医学影像AI在辅助诊断中面临的核心挑战是幻觉现象,即模型生成不符合实际影像的虚假诊断。这种现象源于多模态大语言模型(MLLMs)在视觉-语言对齐上的技术局限,可能导致假阳性或假阴性的临床风险。通过临床对比解码(CCD)框架,结合症状锚定和专家引导的双阶段校准机制,可有效提升模型输出的可靠性。该技术在CheXpert和MIMIC-CXR等标准数据集上验证,显著改善了肺不张、胸腔积液等关键指标的检测准确率。对于医疗AI落地场景,这种即插即用的解决方案既规避了数据隐私合规问题,又降低了基层医院的部署门槛,为AI辅

weixin_36303807的博客 322

Python数据结构的实验代码

实验一 rational 类的实现 实验目的:加深对理解 实验内容:rational 类的实现 参考程序: # Module rational defines a class (a type) retional. # More operations (methods) should be filled. def gcd(m, n): if n == 0 : ...

计算机小白努力学习 1548

OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新)

最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码

晨宇思远 5万+

《数据结构》_PTA_数据结构作业2:栈和队列

判断题 1-1 Run the following operations on a stack S: Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S). The output sequence must be {1, 2, 3}. F 1-2 If keys are pushed onto a stack in the order abcde, then it’s impossible to obtain the output sequence

国家一级致癌物 9978

Unity热更实战:用YooAsset+HybridCLR实现小游戏资源与代码双更新(含避坑清单)

本文详细介绍了Unity小游戏开发中如何通过YooAsset与HybridCLR实现资源与代码双热更新方案。内容涵盖环境配置、架构设计、微信小游戏专项优化、热更代码工程化实践及真机调试技巧,帮助开发者解决审核周期长、紧急修复等痛点,提升更新效率与稳定性。

weixin_42520025的博客 501

2023年5月青少年软件编程Python等级考试四级真题(含答案和解析)

电子学会,2023年5月,青少年软件编程,Python等级考试,四级真题(含答案和解析)

m0_37554648的博客 903

数据结构与算法python语言实现-第四章答案

数据结构与算法python语言实现-第四章答案时间复杂度为O(n) 空间复杂度为O(n)内循环操作数为n/2,调用情况为len(A)/2 -> len(A)/4 -> ...-> len(A)/2**r,即n/2**r<1,r>logn,r=floor(logn)+1,复杂度为logn,所以总的复杂度为O(nlogn) 4.1 def findmax(S, in...

https://tiaoc.github.io/ 1767

ROS实践(四)机器人SLAM建图(gmapping)

本文介绍了SLAM技术及其实现方法。SLAM(同步定位与地图构建)让机器人在未知环境中通过传感器数据自主定位并构建地图。文章详细讲解了激光雷达、RGBD相机等常用传感器,以及gmapping和map_server这两个ROS功能包的使用方法。重点阐述了SLAM建图实验步骤:配置gmapping节点参数、启动机器人仿真、运行gmapping节点、使用rviz可视化工具、通过键盘遥控机器人完成地图构建并保存。实验结果表明,该方法能有效实现机器人自主建图功能,为后续导航等应用奠定基础。

qq_1033275663的博客 4331

c4.5算法python实现_python实现数据结构与算法之栈实现

简介栈(stack),又叫堆栈,是一种容器,可存入数据元素、访问元素、删除元素。它是一种运算受限的线性表,仅允许在表的一端进行插入和删除运算。栈允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom),栈底固定,而栈顶浮动。插入一般称为入栈(push),删除则称为出栈(pop)。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In Firs...

weixin_39628041的博客 75

【异常】OpenClaw LLM Request Timeout 超时问题的快速定位与落地解决

摘要:OpenClaw系统在执行任务时频繁出现"LLM request timed out"异常。通过分析发现主模型自动调度导致响应延迟,且缺乏超时配置兜底。解决方案包括:1)将主模型切换为低延迟的豆包2.0 Lite;2)保留豆包2.0 Pro和Kimi作为备用;3)重启Gateway服务验证。优化后系统响应速度显著提升,未再出现超时异常。后续建议增加显式超时配置、优化任务拆分和Prompt指令,并建立网络监控机制。(148字)

奶爸的编程之路,也就一周冷个三天 1158

【STK】手把手教你利用STK进行导弹和反导仿真04 - STK/MMT模块03 导弹飞行工具应用案例

飞行设置的工具栏就在附加窗口的中间,首先点击左边的General,修改这个项目的名字。然后在下拉的System中选择导弹的类型,这里我们选择远程。(4)输出数据文件到STK,任务窗口里选择Export Manager项,飞行数据输出到STK。项目可以命名为Test;(1)首先建立新项目,点击Flight菜单中的New Flight选项,见下图。首先看世界地图中间的红圈,是一个导弹形状的图标,这个图标表示的是导弹的发射点。选择下面的Export Manager,依次勾选红框的选项。我们拖动这个导弹的图标,

weixin_44184852的博客 1630

数据结构与算法python—4.栈及python实现与leetcode总结

文章目录一、什么是栈?二、栈的实现三、栈的应用1.括号匹配20. 有效的括号2. 四则表达式求值3.设计一个有getMin功能的栈 一、什么是栈?   栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素。栈是限定仅在表尾进行插入与删除操作的线性表。通俗理解来说, 栈也是一种线性结构,相比数组,栈对应的操作是数组的子集,只能从一端添加元素,也只能从同一端取出元素 把允许添加和删除的一端称为栈顶(top) ,另一端称为栈底(bottom)。栈是一种后进先出的数据结构。 思考:

柳杰的博客 356

实战17:GCN+LSTM图卷积神经网络预警预测 完整代码数据集

实战17:GCN+LSTM图卷积神经网络预警预测 完整代码数据集

1945

Python数据结构与算法——第4-2课时——栈的实现——day73

Python数据结构与算法:第4-2课时:栈的实现 栈结构实现 栈 可以用顺序表实现,也可以用链表实现。 这里就用顺序表(序列)实现栈。 栈的操作 • Stack() 创建一个新的空栈 • push(item) 添加一个新的元素item到栈顶(压栈、入栈) • pop() 弹出栈顶元素 • peek() 返回栈顶元素 • is_empty() 判断栈是否为空 • size() 返回栈的元素个数 以上这些实现,全部用列表的函数来实现。 实现代码: class Stack(object): d

asd1103810477的博客 239

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

算法入门——数据结构(栈)python3实现(4)

栈的应用:后缀表达式计算python3实现

weixin_44963137的博客 350

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Python数据结构与算法笔记day21】4.1. 栈结构实现+栈的操作

文章目录4.1. 栈结构实现栈结构实现栈的操作 4.1. 栈结构实现 栈结构实现 栈可以用顺序表实现,也可以用链表实现。 栈的操作 Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数 class Stack(object): ...

汪雯琦的博客 512

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数据结构与算法之Python实现——栈

用Python实现顺序栈、链栈,括号匹配、中缀表达式转换后缀表达式以及计算后缀表达式等算法,每一步都是详细的讲解,你确定不来看看吗

weixin_62917800的博客 1万+

从零开始学习数据结构与算法:Python实现

数据结构与算法是计算机科学中至关重要的概念之一,对于任何想要成为优秀程序员的人来说,深入理解它们是必不可少的。本文将介绍如何从零开始学习数据结构与算法,并使用Python语言实现一些基本的数据结构和算法,帮助读者入门。

一键难忘的博客 4093

Python数据结构与算法-数据结构(列表、栈、队列、链表)

python的数据结构与算法

little_limin的博客 4333

栈数据结构详解:Python实现与经典应用场景

栈(Stack)是计算机科学中最基础且最重要的线性数据结构之一。它遵循先进后出的原则,操作简单,但却能解决许多复杂问题。无论是在函数调用、括号匹配,还是在回溯算法的实现中,栈都发挥着无可替代的作用。在日常编程中,栈的应用无处不在,是每个开发者必须掌握的基础技能。通过本文的讲解,我们不仅将深入了解栈的定义、特点和实现,还将通过实际应用案例,探索栈在括号匹配和回溯算法中的关键作用。如果你想更好地理解栈如何在算法中助力解决问题,这篇文章将是你的最佳起点。

吴师兄大模型的博客 1693

Python 数据结构之栈的实现

文章目录栈的概念栈的特点栈的操作Python 实现栈栈的简单应用:括号匹配问题栈的简单应用:倒序输出一组元素 栈的概念 栈(stack)又名堆栈,栈是一种线性数据结构,用先进后出或者是后进先出的方式存储数据,栈中数据的插入删除操作都是在栈的顶端进行,这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈的特点 元素后进先出(L

BOB'S BLOG 2714
上一篇: python数据结构与算法 3栈的抽象数据类型
下一篇: python数据结构与算法 5栈的应用之圆括号平衡
杀了这个男孩
博客等级 码龄18年 149粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值