Python实现栈和队列

栈:

# -*- coding:utf-8 -*-
class Stack(object):
    def __init__(self):
        self.__list = []
    def push(self,item):
        return self.__list.append(item)
    def pop(self):
        return self.__list.pop()
    def peek(self):
        """返回栈顶元素"""
        if self.__list:
            return self.__list[-1]
        else:
            return None
    def is_empty(self):
        """判断栈是否为空"""
        return  self.__list == []
    def size(self):
        return len(self.__list)

if __name__=="__main__":
    s=Stack()
    print(s.is_empty())
    s.push(1)
    s.push(2)
    s.push(3)
    s.push(4)
    print(s.is_empty())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())

# True
# False
# 4
# 3
# 2
# 1

队列:

# -*- coding:utf-8 -*-
class Queue(object):
    """单队列"""
    def __init__(self):
        self.__list = []
    def inquene(self,item):
        return self.__list.insert(0,item)
    def dequeue(self):
        return self.__list.pop()
    def is_empty(self):
        return self.__list == []
    def size(self):
        return len(self.__list)

class DQueue(object):
    """双端队列"""
    def __init__(self):
        self.__list = []
    def add_front(self,item):
        return self.__list.insert(0,item)
    def add_rear(self,item):
        return self.__list.append(item)
    def pop_front(self):
        return self.__list.pop(0)
    def pop_rear(self):
        return self.__list.pop( )
    def is_empty(self):
        return self.__list == []
    def size(self):
        return len(self.__list)

if __name__ == "__main__":
    q=Queue()
    q.inquene(1)
    q.inquene(2)
    q.inquene(3)
    q.inquene(4)
    q.size()
    q.is_empty()
    print(q.dequeue())
    print(q.dequeue())
    print(q.dequeue())
    print(q.dequeue())

    d=DQueue()
    d.add_front(1)
    d.add_front(2)
    d.add_rear(3)
    d.add_rear(4)
    print(d.pop_rear())
    print(d.pop_rear())
    print(d.pop_rear())
    print(d.pop_rear())

# 1
# 2
# 3
# 4
# 4
# 3
# 1
# 2

原文地址:https://blog.51cto.com/10777193/2395731

时间: 2024-10-30 02:17:52

Python实现栈和队列的相关文章

使用python实现栈和队列

1.使用python实现栈: 1 class stack(): 2 def __init__(self): 3 self.stack = [] 4 def empty(self): 5 return self.stack==[] 6 def push(self,data): 7 self.stack.append(data) 8 def pop(self): 9 if self.empty(): 10 return None; 11 else: 12 return self.stack.pop(

Python实现栈、队列

目录 1. 栈的Python实现 1.1 以列表的形式简单实现栈 1.2 以单链表形式实现栈 2. 队列的Python实现 2.1 以列表实现简单队列 ? 本文将使用python实现数据结构中的栈.队列:有关栈.队列的理论原理请参考:<数据结构与算法>-3-栈和队列: 1. 栈的Python实现 1.1 以列表的形式简单实现栈 """ 以列表的形式简单实现栈 栈:先进后出 """ class Stack: def __init__(s

python中栈和队列简单学习

栈#模拟栈结构#栈有先后顺序的.后进的先取出,先进的最后取出stack=[] #压栈(向栈里存数据)stack.append("a")print(stack)stack.append("b")print(stack) #出栈(在栈里取数据)res1=stack.pop()print("res1=",res1)print(stack)res2 =stack.pop()print("res2=",res2)print(stack)

python——python数据结构之栈、队列的实现

这个在官网中list支持,有实现. 补充一下栈,队列的特性: 1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征 2.队列(queue)是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行.能够增加元素的队列一端称为队尾,可以删除元素的队列一端则称为队首. 地址在 http://docs.python.org/2/tutorial/datastructures.

栈和队列数据结构的基本概念及其相关的Python实现

先来回顾一下栈和队列的基本概念: 相同点:从"数据结构"的角度看,它们都是线性结构,即数据元素之间的关系相同. 不同点:栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表. 队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表.它们是完全不同的数据类型.除了它们各自的基本操作集不同外,主要区别是对插入和删除操作的"限定". 栈必须按"后进先出"的规则进行操作:比如说,小学老师批改学生的作业,如果不打乱作业本的顺

python实现stack(栈)和队列(queue)

栈和队列是两种基本的数据结构,同为容器类型.两者根本的区别在于: stack:后进先出 queue:先进先出 stack和queue是没有查询具体某一个位置的元素的操作的.但是他们的排列是按顺序的 对于stack我们可以使用python内置的list实现,因为list是属于线性数组,在末尾插入和删除一个元素所使用的时间都是O(1),这非常符合stack的要求.当然,我们也可以使用链表来实现. stack的实现代码(使用python内置的list),实现起来是非常的简单,就是list的一些常用操作

LeetCode | 面试题09. 用两个栈实现队列【剑指Offer】【Python】

LeetCode 面试题09. 用两个栈实现队列[剑指Offer][Easy][Python][栈][队列] 问题 力扣 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","deleteHead","

lintcode 中等题:implement queue by two stacks 用栈实现队列

题目 用栈实现队列 正如标题所述,你需要使用两个栈来实现队列的一些操作. 队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素. pop和top方法都应该返回第一个元素的值. 样例 比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2 挑战 仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的 解题 两个栈stack1

【数据结构】栈和队列

栈和队列 容器数据结构是指一些包含了若干个其他相同或不同的数据结构的数据结构,被包含的这些每一个独立的数据结构都被称为一个元素,在一个容器中的元素往往支持相同的操作,具有类似的性质.之前说到过的线性表其实就是一种容器数据结构,本文中介绍的两种最常用的容器数据结构是栈和队列. 从功能上看,栈和队列大多用于计算过程中保存临时数据,这些数据是在计算过程中发现或产生的.在而后的计算中可能会用到这些数据.如果这些数据是固定的个数以及大小的话,可以构建几个变量来储存它们,但是如果这些数据不确定的话,就需要一