[快学Python3]数据结构-堆栈
时间:2022-05-07
本文章向大家介绍[快学Python3]数据结构-堆栈,主要内容包括算法原理、算法实现、小结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
概述
什么是堆栈,简单而言:后进先出。
算法原理
- 进栈(PUSH)算法
- 若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作2)
- 置TOP=TOP+1(栈指针加1,指向进栈地址)
- S(TOP)=X,结束(X为新进栈的元素)
- 退栈(POP)算法
- 若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作2)
- X=S(TOP),(退栈后的元素赋给X)
- TOP=TOP-1,结束(栈指针减1,指向栈顶)
算法实现
# -*- coding:utf-8 -*-
__author__ = '苦叶子'
class Stack:
def __init__(self, size=30):
# 初始化堆栈大小
self.size = size
# 初始化堆栈列表
self.stack = []
# 初始化堆栈默认top值
self.top = -1
# 设置堆栈大小
def set_size(self, size):
self.size = size
# 判断堆栈是否为空
def is_empty(self):
res = False
if self.top == -1:
res = True
return res
# 判断堆栈是否满了
def is_full(self):
res = False
if self.top + 1 == self.size:
res = True
return res
# 打印堆栈里所有内容
def show(self):
print(self.stack) # 入栈
def push(self, obj):
if self.is_full():
raise Exception("堆栈满啦……")
else:
self.stack.append(obj)
self.top += 1
# 出栈
def pop(self):
if self.is_empty():
raise Exception("堆栈是空的……")
else:
self.top -= 1
return self.stack.pop()
if __name__ == "__main__":
print("堆栈实现示例")
# 初始一个长度为5的堆栈实例
stack = Stack(5)
# 入栈 整数1-5
for index in range(1, 6):
stack.push(index)
# 打印下堆栈的内容
stack.show()
# 出栈, data的值应该为5
data = stack.pop()
print(data)
# 打印下堆栈的内容,此时应该是[1,2,3,4]
stack.show()
小结
在本示例中我们使用了python list的特性,实现了堆栈的算法原理,大家可以尝试进一步完善。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法