python 队列与栈的实现

1、Python数据结构——队列

队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。

队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。

queue的常用操作:

Queue()        定义一个空队列,无参数,返回值是空队列。
enqueue(item)  在队列尾部加入一个数据项,参数是数据项,无返回值。
dequeue()      删除队列头部的数据项,不需要参数,返回值是被删除的数据,队列本身有变化。
isEmpty()      检测队列是否为空。无参数,返回布尔值。
clear()        清空队列,无参无返回值
size()         返回队列数据项的数量。无参数,返回一个整。

具体实现如下:

class Queue(object):
    #定义一个空队列
    def __init__(self):
        self.items = []
    #队列(只能在队尾)添加一个元素
    def enqueue(self, item):
        self.items.append(item)
    #删除队列(只能在对头)一个元素
    def dequeue(self):
        self.items.pop(0)
    #判断队列是否为空
    def isEmpty(self):
        return(self.items == [])
    #清空队列
    def clear(self):
        del(self.items) #该队列就不存在了,而不是清空元素
    #返回队列项的数量
    def size(self):
        return(len(self.items))
    #打印队列
    def print(self):
        print(self.items)
if __name__ == '__main__':
    q = Queue()
    print(q.isEmpty())
    for i in range(5):
        q.enqueue(i)
    print(q.size())
    q.print()
    q.dequeue()
    q.print()
    q.clear()
    print(q)

2、Python数据结构——栈

栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。

栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元素,必须先拿掉上面的元素。

stack的常用操作:

Stack()    建立一个空的栈对象。
push(item) 把一个元素添加到栈的最顶层。
pop()      删除栈最顶层的元素,并返回这个元素。
peek()     返回最顶层的元素,并不删除它。
clear()    清空栈。
isEmpty()  判断栈是否为空。
size()     返回栈中元素的个数。

具体实现如下:

class Stack(object):
    #定义一个空栈
    def __init__(self):
        self.items = []
    #添加一个元素
    def push(self, item):
        self.items.append(item)
    #删除一个元素
    def pop(self):
        return(self.items.pop())
    #返回栈顶
    def peek(self):
        return(self.items[-1])
    #清空栈
    def clear(self):
        del(self.items)
    #判断是否为空
    def isEmpty(self):
        return(self.items == [])
    #返回栈中元素个数
    def size(self):
        return(len(self.items))
    #打印栈
    def print(self):
        print(self.items)
if __name__ == '__main__':
    s = Stack()
    print(s.isEmpty())
    for i in range(5):
        s.push(i)
    s.print()
    s.pop()
    s.print()
    print(s.size())
    print(s.peek())
    s.clear()

猜你喜欢

转载自blog.csdn.net/yushupan/article/details/82312819