美文网首页Python学习
2018-07-09顺序表实现栈

2018-07-09顺序表实现栈

作者: 菩灵 | 来源:发表于2018-07-09 12:39 被阅读9次

栈的实现

——直接用顺序表(列表list)进行

栈结构实现

栈可以用顺序表实现,也可以用链表实现。

栈的操作

Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素——不出栈
is_empty() 判断栈是否为空
size() 返回栈的元素个数

添加元素,称为“压栈”(“入栈”),英文中成为push
弹出元素,在栈顶pop出元素

  • 逻辑值真假总结:
    假:空字符串,0,空列表,空元组
数据类型 False True
整型 0 其他
浮点型 0.0 其他
字符串 ‘’ 其他
字典 {} 其他
元组 () 其他
列表 [] 其他
None None 空格

不同逻辑运算符的优先级:

not > and > or

代码实现:

# coding:utf-8

class Stack(object):
    """栈"""
    """Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈的元素个数"""

    def __init__(self):
        # 不希望把容器直接给使用者,否则别人可以绕过以下功能直接操作
        self.__list = []  # 一开始没有元素,空列表

    def push(self, item):
        """添加新的元素"""
        # 根据容器不同,选择头尾
        self.__list.append(item)
        # self.__list.insert(0, item)  # 用顺序表的话,尾部为O(1)

    def pop(self):
        """弹出栈元素"""
        return self.__list.pop()

    def peek(self):
        """返回栈顶元素"""
        # 空列表不支持-1操作,所以要有判断
        if self.__list:
            return self.__list()
        else:
            return None

    def is_empty(self):
        """判断是否为空"""
        # 遇到return的时候,先计算右边的值,如果是逻辑值就返回
        # 判断空,如果是空的,就返回真,否则返回假
        return self.__list == []
        # return not self.__list 等同的效果

    def size(self):
        """返回栈元素的个数"""
        return len(self.__list)

if __name__ == "__main__":
    s = Stack()
    s.push(1)
    s.push(2)
    s.push(3)
    s.push(4)
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())

实现结果:


结果

相关文章

  • 栈 Python实现

    栈的顺序表实现 栈的链接表实现

  • 2018-07-09顺序表实现栈

    栈的实现 ——直接用顺序表(列表list)进行 栈结构实现 栈可以用顺序表实现,也可以用链表实现。 栈的操作 St...

  • 堆栈

    由于栈是一个有穷线性表,所以任何实现表的方法都能实现栈(list,vector...)基本操作 顺序栈 采用顺序存...

  • C语言实现链栈以及基本操作

    链栈,即用链表实现栈存储结构。链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶;...

  • 04栈和队列(特殊的线性表)

    1.栈 1.栈 栈:栈是限定仅在表尾进行插入和删除操作的特殊的线性表。线性表按照存储结构分有顺序存储结构实现的顺序...

  • 04_顺序表实现栈和队列[Python]

    栈和队列都可以通过通过顺序表和链表来实现,本文以顺序表为例,下一篇为链表。 1. 什么是栈 栈(stack),有些...

  • 数据结构之栈

    栈:操作受限的线性表,后进先出栈的内部存储既可以用顺序表,也可以用链表,分别称作顺序栈和链栈。 先来实现一个简单的...

  • 栈:如何实现浏览器的前进和后退功能

    受限制的线性表 先进后出 实现一个栈 数组实现叫顺序栈 支持动态扩容的顺序栈 分析时间复杂度对于出栈来说时间复杂度...

  • 栈的实现

    基于顺序表的栈实现: 测试代码: 基于顺序表的链表实现: 基础数据类: 测试代码: 以为这个会比链表东西会多一些,...

  • 数据结构与算法(五,栈和栈的应用,递归思想)

    栈 栈是只在尾部做添加和删除的线性表 栈的顺序结构方式 栈的顺序存储结构是使用数组实现的,Stack继承了Vect...

网友评论

    本文标题:2018-07-09顺序表实现栈

    本文链接:https://www.haomeiwen.com/subject/tzbzuftx.html