python 链栈及基本操作

python实现基本数据结构第二篇(顺序栈、链栈,顺序队、链队) 栈(stack):是限定仅在表尾进行插入或删除操作的线性表。表尾存在特殊含义,称为栈顶,表头称为栈底,不含数据元素的空表称为空栈。 栈用自己通俗的话讲,其实类似一个圆桶,桶口相当于栈顶,桶底相当于栈底,往桶里装盘子就相当于往栈里压入数据,要取出第一压入栈中的数据元素,就必须从桶口依次取出,这样才能取出第一个放进桶里的盘子,即第一入栈的数据元素,这就是所谓的先进后出原则。 顺序栈的python实现: class StackUnderflow(ValueError): #定义空栈访问时,栈下溢出 p 阅读详情

链栈,即用链表实现栈存储结构

链栈的实现思路同顺序栈类似,顺序栈是将顺序表(数组)的一端作为栈低,另一端为栈顶;链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈低,如图1所示:
在这里插入图片描述

将链表头部作为栈顶的一端,可以避免在实现数据"入栈"和"出栈"操作时做大量遍历链表的耗时操作。

链表的头部作为栈顶,意味着:

  • 在实现数据入栈操作时,需要将数据从链表的头部插入;
  • 在实现数据出栈操作时,需要删除链表头部的首元节点;

因此,链栈实际上就是一个只能采用头插插入或删除数据的链表。

链栈元素入栈

在这里插入图片描述
python代码实现为:

class Node(data):
    self.data = data
    self.next = None

class ListStack:
    def __init__(self):
        self.head = None
        
	def push(self, val):
		# 头部插入节点
		node = Node(val)
		node.next = self.head
		self.head = node

链栈元素出栈

在这里插入图片描述
实现栈顶元素出栈的python代码为:

def pop(self):
	if self.head:
    	self.head = self.head.next
    	return self.head
    else:
    	return -1

总结

通过采用头插法操作数据的单链表实现了链栈结构,这里给出链栈的基本操作python完整代码:

class Node(data):
    self.data = data
    self.next = None

class ListStack:
    def __init__(self):
        self.head = None
        
	def push(self, val):
		# 头部插入节点
		node = Node(val)
		node.next = self.head
		self.head = node
	
	def pop():
	    # 删除头节点元素
	    cur = self.head
	    if cur:
	    	cur = cur.next
	    	return cur
	    else:
	    	return -1

python实现栈的基本操作 题目:自定义类实现栈,要求:初始化栈,清空栈,判断栈是否为空栈,获取栈的长度,获取栈顶元素,入栈,出栈,栈的遍历。 阅读详情

相关推荐

ShardingSphere-JDBC-若依框架集成(SpringBoot)

ShardingSphere基础知识、ShardingSphere-JDBC如何集成进若依框架中 使用的是若依框架前后端版本、动态数据源,可自行切换,默认数据源为达梦8代理端,

编程小菜鸟的笔记 8168

python链栈_栈的链式存储结构

链栈是一种使用链表实现的栈结构。它与顺序栈相比,不需要事先指定栈的大小,可以根据实际需要动态地分配内存空间。链栈由栈顶指针和链表节点组成,栈顶指针指向链表的头节点,每个节点包含数据元素和指向下一个节点的指针。在链栈中,入栈操作相当于在链表头部插入一个新节点,出栈操作相当于删除链表头部的节点。链栈具有灵活性和扩展性,但由于需要额外的指针指向下一个节点,相对于顺序栈,它会占用更多的内存空间。链栈依旧是遵循先进先出的原则,与链表相比,它的push相当于链表的头插法,进入只能从头进,出去只能从头出。

HYSliuliuliu的博客 1万+

告别设备管理器混乱!3分钟学会用STM32CubeMX+Zadig定制专属虚拟串口名称

本文详细介绍了如何利用STM32CubeMX和Zadig工具,为STM32的USB虚拟串口(VCP)定制专属设备名称,从而彻底解决多设备连接时设备管理器端口混乱的难题。通过修改产品字符串描述符并替换驱动,开发者可以在设备管理器中清晰识别不同开发板,显著提升调试效率,尤其适用于多设备协同的竞赛或项目开发场景。

a2b3c4d5e的博客 478

python数据结构:数组、链表、栈、队列、树

python数据结构:数组、链表、栈、队列、树

qq_43745578的博客 3590

OpenFOAM收敛问题排查指南:从参数设置到网格优化

本文系统性地介绍了OpenFOAM计算中收敛问题的排查方法。从理解收敛本质出发,详细讲解了如何通过调优求解控制参数(如松弛因子、离散格式)、合理设置时间步长与耦合算法,以及优化网格质量来解决发散难题。文章提供了从软件设置到硬件网格的完整排查路径,帮助用户实现稳定高效的计算流体力学模拟。

fern8的博客 792

高通camera:PDAF的配置与测试

确认相关log日志都已经打开了之后,判断是在3A算法中没有应用到PDAF,可能是之前在调试AF效果的时候关闭了PDAF,打开效果文件对应的文件夹,在\kamorta_lce_S5K3P9\Scenario.Default\XML\STATS。在log中搜索af_pdaf_proc_pd_single,这个函数是pdaf算法中的,源码被封装了,这里看不到,因此只能通过log打印出来的参数来分析pd是否正确,主要参数有pd ,defocus,confidence。PDAF的配置与测试。

arvin_xiong的博客 2487

python实现数据结构--栈和队列

使用python语言描述栈和队列

qq_56422229的博客 2615

从CD4051到现代模拟开关:40年芯片演进史与选型避坑指南

本文回顾了从CD4051到现代模拟开关的40年技术演进,详细对比了导通电阻、带宽等关键参数的显著提升。通过实际案例和选型矩阵,揭示现代模拟开关在精度、功耗和集成度方面的优势,并提供高精度测量、电池供电等场景的选型策略与避坑指南,帮助工程师优化设计。

weixin_42543046的博客 153

基于Python的数据结构实验——顺序栈与链栈建立与操作(附详细代码和注释)

2、创建名为 prac03_02.py 的文件,在其中编写结点的类和链式栈的类,后者必须包含 链式栈的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确,给出运行结果。1、创建名为 prac03_01.py 的文件,在其中编写一个顺序栈的类,该类必须包含顺序栈 的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确,给出运行结果。(3)将元素 1,3,5 依次进栈。(3)将元素 2,4,6 依次进栈。(2)判断栈是否为空。(8)判断栈是否为空。(2)判断栈是否为空。(6)获取栈的长度。

为人民服务 3555

数字逻辑Fundamentals of Digital Logic with Verilog Design | 3rd Edition Solutins Chapter 3(step by step)

第三章3-1~3-27全部习题解析和代码模块

weixin_62651190的博客 1946

调整开关频率处理传导骚扰超标的系统方法

针对某产品在传导骚扰测试中660kHz频点超标问题,分析发现与DC-DC模块开关频率直接相关。通过调整模块开关频率至500kHz,使其避开标准限值严苛频段(0.53-1.8MHz),在不改变硬件设计的情况下实现测试通过。该案例表明,利用EMC标准的频率特性进行"频谱设计"比传统滤波手段更高效,建议在多模块系统中采用1:2:4等频率规划策略,从源头降低噪声耦合风险。这一频率迁移思路为EMC优化提供了新范式。

硬核科技 330

所有出栈顺序python_使用python完成栈的基本操作,压栈,出栈、计算栈长

在python中不存在指针,所有需要进行链栈的操作时,自己初始化一个栈的结点类,其中定义栈每一个结点的属性,一个next,一个数据;后边的队列和二叉树的完成使用同样的原理,自己定义每一个数据结构的结点属性值顺序栈的操作'''栈的基本操作'''class StackList(object):def __init__(self):self._item = []#判断是否为空def is_empty(s...

weixin_39743695的博客 718

Open3D (C++) 计算点云坐标最值及其索引

使用C++版本的Open3D计算点云最值点及其对应的下标索引

点云侠的博客 730

Python描述数据结构之链栈篇

本篇章主要介绍链栈,并用Python实现其基本操作。

夏小悠的博客 2467

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python数据结构篇(一)—— 顺序栈和链栈的实现

前言 如果是研究算法的小伙伴,可能会经常用到栈、队列、单链表、双链表等数据结构,而Python语言中本身是没有这些数据结构的,不像C/C++可以直接调用STL库。在这里笔者将会通过几篇博客详细介绍在Python中实现上述常用的数据结构,因此本文主要面向初学Python算法和数据结构的小伙伴们。 栈的实现 虽然在Python中没有栈这一数据结构,但是Python有更强大的列表list。list其实是...

jack的博客 2756

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python完成栈的基本操作,压栈,出栈、计算栈长

在python中不存在指针,所有需要进行链栈的操作时,自己初始化一个栈的结点类,其中定义栈每一个结点的属性,一个next,一个数据;后边的队列和二叉树的完成使用同样的原理,自己定义每一个数据结构的结点属性值 顺序栈的操作 '''栈的基本操作''' class StackList(object): def __init__(self): self._item = [] ...

qq_45061361的博客 3058

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数据结构之栈(python)

同顺序表和链表一样,栈也是用来存储逻辑关系为 “一对一” 数据的线性存储栈只能从表的一端存取数据另一端是封闭的在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。拿图1的栈来说,从图中数据的存储状态可判断出,元素 1是最先进的栈。因此,当需要从栈中取出元素 1时,根据"先进后出"的原则,需提前将元素 3和元素 2从栈中取出,然后才能成功取出元素 1我们可以给栈下一个定义,即栈是一种只能从表的一端存取数据且遵循 “先进后出” 原则的线性存储结构通常栈的开口端。

huaz_md的博客 4914

python链栈实现

python链栈 class Node(): #结点类 def __init__(self,elem): self.elem = elem # 数据域,用来存放数据元素 self.next = None # 指针域,指向下一个结点 class Stack(): # 栈 def __init__(self): # 栈初始化 self.head = None # 构造私有头结点 def isempty(self): # 判空栈

weixin_45769222的博客 702

Python实现链栈 Link Stack

""" Python实现链栈 by 勤奋的清风 at 2021-07-17 """ class Node(object): def __init__(self, value=None, next_node=None): self.value = value self.next = next_node def set_value(self, value): self.value = value def set_next(self,

明月清風 764

python栈和队列的顺序和链式实现_顺序栈与链式栈的图解与实现

# 顺序栈与链式栈的图解与实现栈是一种特殊的线性表,它与线性表的区别体现在增删操作上栈的特点是先进后出,后进先出,也就是说栈的数据操作只能发生在末端,而不允许在中间节点进行操作如上图所示,对栈的增删操作都只能在末端也就是栈顶操作,栈既然是线性表那么就存在表头和表尾,不过在栈结构中,对其都进行限制改造,表尾用来输入数据也叫做栈顶(top),相应的 表头就是栈底(bottom),栈顶和栈顶是两个指针用...

weixin_39787594的博客 212

007-栈的概念与实现

本文介绍了栈的基本概念和实现方式。栈是一种后进先出(LIFO)的线性表,操作限定在栈顶进行。主要内容包括: 栈的定义和特点:限定在栈顶进行插入删除操作,具有后进先出的特性。 栈的抽象数据类型(ADT):定义了初始化、销毁、判断空/满、获取栈顶元素、进栈、出栈等基本操作。 栈的顺序存储实现: 使用数组存储元素,top指针指示栈顶位置 详细讲解了基本操作的C语言实现,包括初始化、判断空/满、进栈、出栈等 提供了Python实现的顺序栈类 操作的时间复杂度均为O(1),体现了栈高效插入删除的特点。 本文通过代码示

wyl703的博客 1194

链队基本操作(笔记版)

本节主要针对链栈的基本操作进行解析。

weixin_65259109的博客 119

链栈的基本操作

链栈的基本操作 定义 结构体 链栈的基本操作 压栈 读栈 弹栈 求栈的长度1.定义1.1栈栈(stack)是一种特殊的线性表.栈是限定结点插入和删除只能在同一端进行的线性表. 栈犹如一个一端开口一端封闭的容器.可插入和删除的一端称为栈顶,另一端称为栈底. ”栈顶指针”:指示最后插入栈中的结点位置,处于栈顶位置的结点称为栈顶结点.”栈底指针”:指示栈底位置,它始终指向最先插入的结点的下面

forwardyzk的专栏 2100

链栈的基本操作实现

#include using namespace std; typedef char Item; typedef struct Node { Item data; Node *link; }Node,*Stack; void Copy(Item *dest,Item *src); void InitStack(Stack *T); void Push(Stack *T,Item

flyapy 498

用Python来实现栈的基本操作——顺序栈&链式栈

什么是栈? 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为"栈顶",另一固定端称为"栈底",当栈中没有元素时称为"空栈" 如图所示我们可以清晰的看到,我们只对栈的栈顶进行操作,属于先进后出的原则。 顺序栈代码实现 """ python实现栈模型 - 顺序存储 设计思路: 1. 栈: LIFO 后进先出 2. 设计 栈顶:列表尾部(入栈 出栈) 栈底: 不进行任何操作 """ import time class Stack:

weixin_46120601的博客 2751
上一篇: python 顺序栈及基本操作
下一篇: python 栈排序
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶知秋的BLOG

创作不易 请多多关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值