栈——用链表实现栈操作
一、添加一个元素到栈顶
def push(self,data):node=Node(item,self.__top)node.next=self.__topself.__top=nodeself._size+=1
二、弹出栈顶元素
def pop(self)if self.is_empty():print('栈为空')else:value=self.top.dataself.__top=self.__top.nextself._size-=1 return value
三、返回栈顶元素
def top(self):if self.is_empty():print('栈顶元素为空')else:return self.__top.data
四、判断栈是否为空
def is_empty(self)return self.__size==0
五、判断栈中数据数量
def size(self):return self.__size
代码块
class Node:def __init__(self,data,_next=None):self.data=data #数据域self.next=_next #指针域class Stack:def __init__(self):#以链表的第一个节点作为栈顶self.__top=None #栈顶元素,self._size=0 #栈内元素个数def push(self, item):# 添加一个元素到栈顶# 让self.top指向新的节点# 让新的节点的next指向原本的节点#self.__top = Node(item, self.__top)node=Node(item,self.__top)node.next=self.__topself.__top = nodeself._size+=1def pop(self):# 要判断栈是否为空if self.is_empty():raise ValueError('栈为空')value=self.__top.data#让栈顶元素指向下一个节点self.__top=self.__top.nextself._size-=1return valuedef top(self):# 要判断栈是否为空if self.is_empty():raise ValueError('栈为空')return self.__top.datadef is_empty(self):return self._size == 0#return self.__top == Nonedef size(self):return self._sizeif __name__ == '__main__':stack = Stack()stack.push(1)stack.push(2)stack.push(3)stack.push(4)print(stack.size())print(stack.pop())print(stack.pop())print(stack.pop())print(stack.pop())print(stack.pop())print(stack.is_empty())
栈——用链表实现栈操作相关推荐
- 数据结构 - 栈(链表实现栈的入栈出栈)
学完链表和栈,数组模拟栈学完后,自己根据链表写了个链栈,虽然只是简单的实现了入栈出栈遍历.收获还是很大的. 在push这里思考了一会,思路是:传入一个数字,push里创建一个节点node,把数据加入n ...
- Java数据结构 利用双栈实现链表操作
利用双栈实现链表操作 class CQueue {private int count;private ListNode head;private ListNode tail;public CQueue ...
- 用单链表实现栈及操作
包括:栈建立:入栈:出栈:打印栈: 构造节点: #define SLen (sizeof(struct stu))typedef struct stu {int a;struct stu *next; ...
- 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解
一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...
- 数据结构栈队列链表数组
目录: 数据结构 栈(stack) 队列 链表 数组 数据结构 数据结构是什么 简单来说,数据结构就是设计数据以何种方式存储在计算机中 比如:列表,集合,与字典等都是一种数据结构 程序 = 数据结构 ...
- (数据结构与算法)数组和单链表实现栈的基本操作
数组实现栈 栈接口 public interface Stack<E> {int getSize();boolean isEmpty();void push(E e);E pop();E ...
- 数据结构之数组、链表、栈和队列
1.数组 1.1:概念 数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据.这里我们要抽取出三个跟数组相关的关键词:线性表,连续内存空间,相同数据类型:数组具有连续的内存空 ...
- Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...
本文实例讲述了java数据结构之链表.栈.队列.树的实现方法.分享给大家供大家参考,具体如下: 最近无意中翻到一本书,闲来无事写几行代码,实现几种常用的数据结构,以备后查. 一.线性表(链表) 1.节 ...
- python链表实现栈_使用python实现数组、链表、队列、栈
引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表,集合和字 ...
最新文章
- 我的服务器有硬件防火墙,而且只开了80端口,是不会有网络安全问题的
- 如何从“查找”中排除所有“拒绝权限”消息?
- Spring - Java/J2EE Application Framework 应用框架 第 11 章 使用ORM工具进行数据访问
- Python字典的作用与基本操作
- 互联网公司职级和薪资一览!
- java环境变量立即生效_win7批处理环境变量立即生效
- Django模板渲染——(二)
- “高考”机器人横空出世 2017年居然要考“大学”
- spring5.0.2中文官网文档pdf
- 季节性时间序列数据分析_如何指导时间序列数据的探索性数据分析
- 3ds max删除了对象后,还是将原来所有对象输出的原因
- vue小demo易错点总结
- python自动拨号_python adsl拨号
- 第七课:MobileNetv1、MobileNetv2、MobileNetv3学习
- 【转】ESXI 7.0 打包网卡驱动
- Telegram Bot Api使用教程
- 如何给房子定一个合理的售价
- Linux系统自动化安装(二)
- 在C#开发WPF桌面应用程序调用OCX控件
- [论文+辩论PPT+源码等]精品微信小程序springboot居家养老服务+后台管理前后分离
热门文章
- 能效超标,11家数据中心被集中约谈学习!
- 浅析网络流量分析原理:如何把二进制“天书”变成“人话”
- 成功解决ERROR: Could not find a version that satisfies the requirement xgboost (from versions: none) ERR
- 成功解决 利用plt.plot绘图时,横坐标出现浮点小数而不是整数的情况(坐标轴刻度)
- AI机器人:机器人语音文本智能交互之自定义软件——实现模拟中本聪与V神跨时空畅谈
- 成功解决TypeError: Object of type 'ndarray' is not JSON serializable
- ML之LoR:利用LoR二分类之非线性决策算法案例应用之划分正负样本
- 3.1 Tensorflow: 批标准化(Batch Normalization)
- 程序员找工作那些事(一)幸存者偏差
- 解决java web前后台乱码