美文网首页
栈——Python数据结构

栈——Python数据结构

作者: RayRaymond | 来源:发表于2020-04-08 09:24 被阅读0次

线性结构 (Linear Structure) 是一种有序数据项的集合,其中每个数据项都有唯一的前驱与后驱。不同的线性结构关键的区别在于数据项增删的方式

栈 Stack 的基础性质

栈的增删示意图
  • 有向数据项集合,数据项的增删都在同一端(栈顶 Top )

  • 后入先出 LIFO Last in First out

  • python 实现栈


    栈的抽象数据类型

用 list 的尾端list[-1]做栈顶,push pop 的复杂度均为 O(1)

class Stack:

    def __init__(self):
        self.items = []

    def isEmpty(self):
        return 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 size(self):
        return len(self.items)

用 list 的首端list[0]做栈顶,push pop 的复杂度均为 O(n)

class Stack:

    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []
    
    def push(self, item):
        self.items.insert(0,item)

    def pop(self):
        return self.items.pop(0)

    def peek(self):
        return self.items[0]

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

栈的应用

  1. 简易括号匹配
    从左向右扫描括号,最新打开的左括号 ( 应该匹配到最先遇到的右括号 ) .
    实现思路:从左往右入栈,遇到 ( 直接入,遇到 ) 不用入栈并且pop() 一次。读完所有如果栈空就是完全匹配
class Stack:

    def __init__(self):
        self.items = []

    def isEmpty(self):
        return 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 size(self):
        return len(self.items)

def parChecker(symbs):
    
    s = Stack()
    for i in symbs:
        if i == ')':
            if s.isEmpty():
                return False
            else:
                s.pop()
        elif i == '(':
            s.push(i)
    return s.isEmpty()

print('():', parChecker('()'))
print('(())):', parChecker('(()))'))
print('):', parChecker(')'))
  1. 通用括号匹配

通用版的括号匹配需要考虑的除了 () 之外还有[] {} <>

待更

相关文章

  • 6-Python 数据结构初识

    课程概要:1、Python 数据结构概述2、Python 常见数据结构——栈3、Python 常见数据结构——队列...

  • LintCode 495 [Implement Stack]

    原题 实现一个栈,可以使用除了栈之外的数据结构 样例 解题思路 使用python list实现stack数据结构 ...

  • python3.6 queue模块

    python中的queue模块其实是对数据结构中栈和队列这种数据结构的封装,把抽象的数据结构封装成类的属性和方法。...

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • python数据结构-栈

    想象一摞被堆起来的书,这就是栈。这堆书的特点是,最后被堆进去的书,永远在最上面。从这堆书里面取一本书出来,取哪本书...

  • 栈——Python数据结构

    线性结构 (Linear Structure) 是一种有序数据项的集合,其中每个数据项都有唯一的前驱与后驱。不同的...

  • Python——用列表实现栈和队列

    1 用列表实现栈的功能 栈是一种“先进后出”的数据结构,可以用python内置的列表实现它。栈有两个最基本的操作:...

  • Python实现队列,栈

    通过python设计实现队列以及栈,复习一下数据结构 队列:先进先出 class Stack(object):de...

  • 004 go语言实现栈

    1 数据结构 数据结构: 要实现的功能:0 栈的初始化1 获取栈长度2 入栈3 出栈4 清空栈内容5 判断栈是否为...

  • 刷穿剑指offer-Day18-栈II 单调栈的解题思路

    昨日回顾 昨天我们开启了栈这个数据结构的章节,分别介绍了Python和Java中栈的初始化与使用。然后通过三道题目...

网友评论

      本文标题:栈——Python数据结构

      本文链接:https://www.haomeiwen.com/subject/uztnphtx.html