python数据结构之栈(stack)

本文介绍了栈这一数据结构,重点讲解了栈的后进先出特性,并通过实例展示了如何利用栈实现字符串元素的倒转。文章包括栈的定义、基本操作以及小练习,适合初学者理解栈的概念及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  1. 栈的定义
  2. 栈的基本操作
  3. 小练习

1.栈的定义

栈遵循后进先出(Last In First Out),现实生活中也有不少这样的例子,比如在学校食堂吃完饭时,你把盘子放到桌子上,叠起来之后,阿姨过来拿盘子出去洗,假如是手洗,那肯定是先从最上面的盘子开始拿来洗的,而最上面的盘子是最后放上去的,却是第一个 被拿出来的,这就是后进先出,与之相同的还有查看网页,比如你查找“stack”,往往你会打开好几张网页链接,然后再继续开,你一开始看的网页应该就是你最后打开的。

2.栈的基本操作

class Node(object):
    def __init__(self, data, next = None):
        self.data = data
        self.next = next

class Stack(object):
    def __init__(self, top = None):
        self.top = top

    def push(self,data):
        #创建新的节点放到栈顶
        self.top = Node(data, self.top)

    def pop(self):
        #拿出栈顶元素,原来的栈发生改变
        if self.top is None:
            return None
        data = self.top.data
        self.top = self.top.next
        return data

    def peek(self):
        #查看栈顶元素,原来的栈不变
        return self.top.data if self.top is not None else None

    def isEmpty(self):
        return self.peek() is None


if __name__ == "__main__":
    stack = Stack()
    stack1 = stack.push(1)
    stack1 = stack.push(2)
    print stack.peek(), #查看栈顶元素
    stack.pop()
    print stack.peek()
#输出: 2 1

3.小练习

使用栈,使得输入字符串元素倒转,即:

"apple""elppa"

    def revStrings(myStr):
        stack = Stack()
        for ch in myStr:
            stack.push(ch)
        revStr = ''
        while not stack.isEmpty():
            revStr += stack.pop()
        return revStr
    print revStrings("apple")

写不出或报错的人,主要有以下原因:

  • 不会使用栈的思想:后进先出
  • 没想到字符串遍历
  • 字符串拼接问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值