栈——用顺序表实现栈操作

一、线性表特点

线性表:由0个或者多个数据元素组成的有限序列
除了第一个节点(头节点),都有前驱节点
除了最后一个节点(尾节点),都有后继节点
线性表主要由顺序存储结构或者链式存储结构

一般线性表:可以自由的操作节点,例如顺序表,链表
受限制性表:对节点的操作受到限制,例如栈和队列

二、栈引入

在这里插入图片描述

栈特点:
1、只能对栈顶进行添加或者弹出
2、后进先出

在这里插入图片描述

三、栈要实现的操作

在这里插入图片描述

1、创建一个空栈
class Stack:
	def __init__(self):
		self.__data=[]
2、push(item)添加一个元素item到栈顶
def push(self,item):
	self.__data.append(item)
3、pop()弹出栈顶元素
def  pop(self):
	if self.is_empty():
		raise ValueError('栈为空')
	else:
		self.__data.pop()
	return self.__data
4、返回栈顶元素
def top(self):
	if self.empty():
		raise ValueError('栈为空')
	else:
		self.__data[-1]
5、判断栈是否为空
def is_empty(self):
	return self.__data==[]
6、返回栈的元素个数
def size(self):
	return len(self.__data)

四、代码块

class Stack:
    def __init__(self):
        # 把列表的最后一个元素作为栈顶
        self.__data = []

    def push(self, item):
        # 添加一个元素到栈顶
        # append insert
        self.__data.append(item)

    def pop(self):
        # 要判断栈是否为空
        if self.is_empty():
            raise ValueError('栈为空')
        return self.__data.pop()

    def top(self):
        # 要判断栈是否为空
        if self.is_empty():
            raise ValueError('栈为空')
        return self.__data[-1]

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

    def size(self):
        return len(self.__data)


if __name__ == '__main__':
    stack = Stack()
    stack.push(1)
    stack.push(2)
    stack.push(3)
    stack.push(4)
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())
    print(stack.pop())
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码敲到头发茂密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值