Python数据结构与算法分析-栈

本文介绍了栈的基本概念,如LIFO原则及其在编程中的应用,包括Python实现栈的类结构和使用栈匹配括号的方法。同时提到了VScode在执行代码时遇到的执行政策问题及解决方法。
摘要由CSDN通过智能技术生成

目录

一.定义

二.栈支持的操作

三.Python实现栈

四.栈的应用 匹配括号

五.遇到的问题

1.VScode无法执行代码


一.定义

栈是有序集合,遵循LIFO(last-in-first-out)原则,就像酒店里堆叠的盘子,顾客可以从上面依次取走盘子。栈在实际代码中有很多应用,比如浏览器的后退按钮,当我们浏览网页的时候,网页的URL都被堆放在一个栈中,正在浏览的网页就在栈的顶端,最早的网页在栈的底端。

二.栈支持的操作

--Stack()创建一个空栈

--push(item)添加元素到栈的顶端,无返回值

--pop()移除栈的顶端数据,返回移除的数据

--peek()返回顶端数据

--isEmpty()判断栈是否为空,返回布尔值

--size()返回栈中数据数量

三.Python实现栈

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

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

    def pop(self):
        return self.items.pop()
    
    def peek(self):
        return self.items[len(self.items)-1] # data start from 0
    
    def size(self):
        return len(self.items)

四.栈的应用 匹配括号

# Input:symbolString
# Output:True or False
# Do
def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:# balanced as out condition
        symbol = symbolString[index]
        if  symbol == '(':
            s.push(symbol)
        else:
            if s.isEmpty():
                balanced = False
            else:
                s.pop()
        index = index + 1

    if balanced and s.isEmpty():
        return True
    else:
        return False
    
symbolStrig = ""
print(parChecker(symbolStrig))

五.遇到的问题

1.VScode无法执行代码

+ & E:/python/Scripts/Activate.ps1
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

解决方案参考:

在终端先输入“get-executionpolicy”
Restricted
再输入“Set-ExecutionPolicy -Scope CurrentUser RemoteSigned”

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值