python实现数据结构栈、队列与双端队列思路

python实现栈结构

栈的特点:先进后出(FILO)
根据这个特点,我们要对栈顶进行操作,实现以下功能

  1. 建立一个空栈
  2. 入栈或者压栈
  3. 出栈或者弹栈
  4. 判断是否空栈
  5. 返回栈顶元素
  6. 返回栈的元素个数

使用类队函数进行封装

class Stack(object):
    # 建立一个空栈
    def __init__(self):
        self.list=[]
    # 压栈、入栈
    def push(self,item):
        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()
    s.push(1)
    s.push(2)
    s.push(3)
    s.push(4)
    s.push(5)
    print(s.size())
    print(s.is_empty())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())

python实现队列

特点:先进先出(FIFO)
根据这个特点,我们要对栈顶进行操作,实现以下功能

  1. 建立一个空队列
  2. 入队
  3. 出队
  4. 判断是否空队列
  5. 返回队列的元素个数

使用类队函数进行封装

在这里插入代码片
class Queue(object):
    def __init__(self):
        self.list=[]

    def enqueue(self,item):
        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)

if __name__ == '__main__':
    q=Queue()
    q.enqueue(1)
    q.enqueue(2)
    q.enqueue(3)
    q.enqueue(4)
    print(q.dequeue())
    print(q.dequeue())
    print(q.dequeue())
    print(q.dequeue())

python实现双端队列
特点:可从两端添加和弹出元素
在这里插入图片描述

class Dequ(object):
    def __init__(self):
        self.list=[]

    def add_front(self,item):
        self.list.insert(0,item)

    def add_rear(self,item):
        self.list.append(item)

    def pop_front(self):
        return self.list.pop()

    def pop_rear(self):
        return self.list.pop(0)

    def is_empty(self):
        return self.list==[]

    def size(self):
        return len(self.list)

if __name__ == '__main__':
    q=Dequ()
    q.add_front(1)
    q.add_front(2)
    q.add_front(3)
    q.add_front(4)
    print(q.pop_front())
    print(q.pop_front())
    print(q.pop_front())
    print(q.pop_front())

猜你喜欢

转载自blog.csdn.net/weixin_43870646/article/details/85223263