栈的两种实现方式

1. 基于线性表的实现

# 栈的顺序表实现
# 1 是否空 2 是否满 3 压入 4弹出 5 查询最顶元素
class St_list:
    def __init__(self,max_):
        self.max=max_
        self.elems=[None]*self.max
        self.top=-1
    def is_empty(self):
        return self.top==-1
    def is_full(self):
        return self.top==self.max-1
    def push(self,elem):
        if not self.is_full():
            self.elems[self.top]=elem
            self.top+=1
        else:
            print("st is full")
    def pop(self):
        if not self.is_empty():
            self.top -= 1
            ans=self.elems[self.top]
            return ans
        else:
            print("超出引索")
    

2. 基于链表的实现

from Llist import *
class St_clist:
    def __init__(self,max_=10):
        self.top=-1
        self.max=max_
        self.list=Linklist()
    def is_empty(self):
        return self.top==-1
    def is_full(self):
        return self.top==self.max-1
    def push(self,elem):
        if not self.is_full():
            self.list.append(elem)
            self.top += 1
        else:
            print("堆栈已满")
    def pop(self):
        if not self.is_empty():
            ans=self.list.delete(self.list.length-1)
            self.top -= 1
            return ans
        else:
            print("堆栈已空")
        

3.栈 API

class St_list:
    # [   ] 的 左边是栈口
    def __init__(self,max_):
        self.max=max_
        self.elems=[None]*self.max
        self.top=-1
    def is_empty(self):
        return self.top==-1
    def is_full(self):
        return self.top==self.max-1
    def push(self,elem):
        if not self.is_full():
            self.top+=1
            self.elems[self.top]=elem
        else:
            print("栈已满")
    def pop(self):
        if not self.is_empty():
            ans=self.elems[self.top]
            self.elems[self.top] = None
            self.top -= 1
            return ans
        else:
            print("栈已空!")
    def traversal(self):
        return self.elems



# API提供: 设计栈的深度  查看是否栈空    查看栈满  压入栈  出栈  遍历栈  


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值