Python数据结构|栈的自定义实现

栈是常用的数据结构,我们今天一起来学习python中的栈的实现吧~主要包括基础知识和进栈、出栈、判空、获取栈大小、获取栈顶,打印栈等的代码实现


1. 栈基础知识

栈是种有序集合,添加操作和移除操作总是发生在同一端,即顶端。(另一端称为底端),栈提供基于在集合种的时间来排序的方式,最近添加额元素在顶端,旧元素靠近底端。 python中栈自定义实现,主要操作包括进栈、出栈、判空、获取栈大小和获取栈顶元素,同时我们在以上基础上自定义栈的打印函数,同时有时候一个一个值进栈比较麻烦,我们也定义了将列表里所有值一次性进栈的函数push_lst()。

2. 代码实现

# python中栈自定义实现,主要操作包括进栈、出栈、判空、获取栈大小和获取栈顶元素
# 同时我们在以上基础上自定义栈的打印函数
class Stack:
    def __init__(self):
        self.items = []
    # 1.进栈
    def push(self, item):
        self.items.append(item)
    # 1.1 将列表中的值一次性进栈
    def push_list(self, lst):
        for i in range(len(lst)):
            self.push(lst[i])
    # 2.出栈
    def pop(self):
        return self.items.pop()
    # 3.判空
    def isEmpty(self):
        return self.items == []
    # 4.获取大小
    def size(self):
        return len(self.items)
    # 5.取栈顶元素
    def top(self):
        return self.items[len(self.items)-1]
    # 6. 打印栈
    def print_stack(self):
        for i in range(self.size()):
            print(self.items[i], end=" ")
        print("\n")

3.重点讲解

        1.首先我们在初始化函数__init__()中定义了self.items变量用来存储栈中的值,后续的各种方法都是基于这个变量。

        2.进栈函数push的实现

# 1.进栈 
def push(self, item): 
    self.items.append(item)

        3.实际上就是使用list类型的append函数将传入的item值追加到self.items中,append尾部追加元素的特点正好符合栈的特点。

        4.同时有时候一个一个值进栈比较麻烦,我们也定义了将列表里所有值一次性进栈的函数push_lst(),如下所示。

主要原理是获取输入的列表长度,再循环调用push()函数,将列表中的值依次入栈。

# 1.1 将列表中的值一次性进栈
def push_list(self, lst):
     for i in range(len(lst)):
         self.push(lst[i])
# 1.2 使用
s = Stack()
s.push_list([3, 5, 7])

同理,栈的打印的实现原理与push_lst()类似。

#打印栈
def print_stack(self):
     for i in range(self.size()):
         print(self.items[i], end=" ")
     print("\n")

栈的测试如下所示。

# 测试栈
s = Stack()
print(s.isEmpty()) # True
s.push(1) # 将1进栈
s.push_list([3, 5, 7])
s.print_stack()
s.pop()
s.print_stack()
print("size: ", s.size(), "top: ", s.size()) 
# size:  3 top:  3

对应结果如下

编辑

添加图片注释,不超过 140 字(可选)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值