当前位置:   article > 正文

数据结构——python 003 栈和队列_python3 栈

python3 栈

栈和队列

栈——定义

是一种只能在同一端进行插入或删除操作的线性表。

表中允许进行插入、删除操作的一端称为栈顶。栈顶的当前位置是动态的,可以用一个称为栈顶指针的位置指示器来指示。

表的另一端称为栈底

当栈中没有数据元素时称为空栈

栈的插入操作通常称为进栈入栈,栈的删除操作通常称为退栈出栈

特点:“后进先出”或“先进后出”

在这里插入图片描述

入栈、出栈

顺序栈

    # 进栈
    def push(self,e):
        self.data.append(e)
        
    # 出栈
    def pop(self):
        assert not self.empty()             # 检测栈不为空,出栈
        return self.data.pop()
    

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

链栈

   # 进栈
    def push(self, e):
        p = LinkNode(e)
        p.next = self.head.next
        self.head.next = p

    # 出栈
    def pop(self):
        assert self.head.next != None
        p = self.head.next
        self.head.next = p.next
        return p.data


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

队列——定义

队列(简称为队)是一种操作受限的线性表,其限制为仅允许在表的一端进行插入,而在表的另一端进行删除。

进行插入的一端称为队尾

进行删除的一端称为队头队首

队列:先进先出表

默认队列一头只进,另一头只出,一个元素要入队,只能从队尾进。

在这里插入图片描述

进队的代码

循环队列

    # 元素进队
    # 在队列不满的情况下,先将队尾指针rear循环+1,然后将元素e放到该位置处,否则抛出异常
    def push(self, e):
        # 检测队满
        assert (self.rear+1)%MaxSize != self.front
        self.rear = (self.rear+1)%MaxSize
        self.data[self.rear] = e

    # 出队元素
    def pop(self):
        assert not self.empty()
        self.front = (self.front+1)%MaxSize
        return self.data[self.front]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

队列的链式存储

    # 元素e进队
    def push(self, e):
        s = LinkNode(e)                     # 新建结点s
        if self.empty():
            self.front = self.rear = s
        else:
            self.rear.next = s
            self.rear = s

    # 出队操作
    def pop(self):
        assert not self.empty()
        if self.front == self.rear:         # 原链队只有一个结点
            e = self.front.data             # 取首结点的值
            self.front = self.rear = None   # 置为空队
        else:                               # 若原链队有多个结点
            e = self.front.data
            self.front = self.front.next    # front指向下一个结点
        return e


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/1005125
推荐阅读
相关标签
  

闽ICP备14008679号