python实现栈的操作_Python实现栈和队列的简单操作方法示例

本文实例讲述了Python实现栈和队列的简单操作方法。分享给大家供大家参考,具体如下:

先简单的了解一下数据结构里面的栈和堆:

栈和队列是两种基本的数据结构,同为容器类型。两者根本的区别在于:

stack:后进先出

20191129111140331.png?2019102911120

queue:先进先出

20191129111211258.png?20191029111237

stack和queue是不能通过查询具体某一个位置的元素而进行操作的。但是他们的排列是按顺序的

对于stack我们可以使用python内置的list实现,因为list是属于线性数组,在末尾插入和删除一个元素所使用的时间都是O(1),这非常符合stack的要求。当然,我们也可以使用链表来实现。

stack的实现代码(使用python内置的list),实现起来是非常的简单,就是list的一些常用操作

class Stack(object):

def __init__(self):

self.stack = []

def push(self, value): # 进栈

self.stack.append(value)

def pop(self): #出栈

if self.stack:

self.stack.pop()

else:

raise LookupError('stack is empty!')

def is_empty(self): # 如果栈为空

return bool(self.stack)

def top(self):

#取出目前stack中最新的元素

return self.stack[-1]

我们定义如下的链表来实现队列数据结构:

20191129111302033.png?20191029111323

定义一个头结点,左边指向队列的开头,右边指向队列的末尾,这样就可以保证我们插入一个元素和取出一个元素都是O(1)的操作,使用这种链表实现stack也是非常的方便。实现代码如下:

class Head(object):

def __init__(self):

self.left = None

self.right = None

class Node(object):

def __init__(self, value):

self.value = value

self.next = None

class Queue(object):

def __init__(self):

#初始化节点

self.head = Head()

def enqueue(self, value):

#插入一个元素

newnode = Node(value)

p = self.head

if p.right:

#如果head节点的右边不为None

#说明队列中已经有元素了

#就执行下列的操作

temp = p.right

p.right = newnode

temp.next = newnode

else:

#这说明队列为空,插入第一个元素

p.right = newnode

p.left = newnode

def dequeue(self):

#取出一个元素

p = self.head

if p.left and (p.left == p.right):

#说明队列中已经有元素

#但是这是最后一个元素

temp = p.left

p.left = p.right = None

return temp.value

elif p.left and (p.left != p.right):

#说明队列中有元素,而且不止一个

temp = p.left

p.left = temp.next

return temp.value

else:

#说明队列为空

#抛出查询错误

raise LookupError('queue is empty!')

def is_empty(self):

if self.head.left:

return False

else:

return True

def top(self):

#查询目前队列中最早入队的元素

if self.head.left:

return self.head.left.value

else:

raise LookupError('queue is empty!')

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python实现栈和队列的简单操作方法示例

本文地址: http://www.cppcns.com/jiaoben/python/289673.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值