Python-栈

一.

class Stack(object):
    """docstring for Stack"""
    def __init__(self, size):
        self.stack = []
        self.size = size
        self.top = -1

    def push(self,content):
        if self.full():
            print("stack is full")
        else:
            self.stack.append(content)
            self.top = self.top + 1

    def pop(self,content):
        if self.empty():
            print("stack is empty")
        else:
            self.top = self.top - 1

    def empty(self):
        if self.top == -1:
            return True
        else:
            return False

    def full(self):
        if self.top == self.size:
            return True
        else:
            return False

stack = Stack(9)
# stack.push(3)
stack.pop(3)
print(stack.empty())

1.首先定义一个Stack类
初始化这个类,定义self.stack为列表,然后我们在给他添加条件,因为列表是任何位置都可以取元素,而栈是FILO结构.

2.判断栈是否空或者满
空的话就是self.top == -1,满的话就是top指针和栈大小相同,即self.top == self.size

def empty(self):
def full(self):

3.进栈操作如下

def push(self,content):
        if self.full():
            print("stack is full")
        else:
            self.stack.append(content)
            self.top = self.top + 1

先判断是否满,如果满就放不下了,不满的话,列表追加一个元素,就是我们传进去的content,然后top指针再加1,再赋给self.top,相当于self.top++
注意Python中没有self.top++这种操作,但可以self.top+=1或者相应的self.top-=1

4.出栈操作如下

def pop(self,content):
        if self.empty():
            print("stack is empty")
        else:
            self.top = self.top - 1

self.top减去1,然后再赋给self.top

二.

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

    def is_empty(self):
        return self._elems == []

    def top(self):
        if self._elems == []:
            print("Stack is empty")
        return -1

    def push(self,elem):
        self._elems.append(elem)

    def pop_(self):
        if self._elems == []:
            print("Stack is empty")
        #删除并返回最后一个元素,即删除的元素
        return self._elems.pop()

stack = Stack()
stack.push(3)
stack.push(5)
while not stack.is_empty():
    print(stack.pop_())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值