python 数据结构 - 栈

如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10293388.html

欢迎关注小婷儿的博客:

有问题请在博客下留言或加作者微信tinghai87605025  QQ 87605025

python QQ交流群:py_data 483766429

博客园:http://www.cnblogs.com/xxtalhr/

csdnhttps://blog.csdn.net/u010986753

 一、概念

栈(stack),有些地方称为堆栈,是一种后入先出(LIFOlast-in-first-out的数据结构,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在一端进行加入数据和输出数据操作。

栈可以使用顺序存储结构的内存空间实现,其内存空间分布如下:

wps5B47.tmp

 

二、应用

根据栈的特点,列表可以作为栈使用。

append相当于入栈、pop相当于出栈;

xxt = [1,2,3,'a','b','c']

xxt.append(6) #入栈 [1, 2, 3, 'a', 'b', 'c', 6]

xxt.pop() #出栈 [1, 2, 3, 'a', 'b', 'c']

  

 

 

 

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

    def push(self, info):
        '''入栈'''
        self.xxt.append(info)
        return self.xxt

    def pop(self):
        '''出栈'''
        return self.xxt.pop()

    def isEmpty(self):
        '''判断栈中是否有元素'''
        return len(self.xxt) == 0

    def size(self):
        '''获取栈中元素个数'''
        return len(self.xxt)

if __name__ == '__main__':
    xxt = [1, 2, 3, 'a', 'b', 'c']
    xxt.append(6)  # [1, 2, 3, 'a', 'b', 'c', 6]
    xxt.pop()  # [1, 2, 3, 'a', 'b', 'c']

    stack = Stack()
    print('stack.push66:', stack.push(66))
    print('stack.push13:', stack.push(13))
    print('stack.pop:%s,xxt:%s' % (stack.pop(), xxt))
    print('stack.pop:%s,xxt:%s' % (stack.pop(), xxt))
    # print('stack.pop:%s,xxt:%s' % (stack.pop(), xxt))  #IndexError: pop from empty list
    
'''结果
stack.push66: [66]
stack.push13: [66, 13]
stack.pop:13,xxt:[1, 2, 3, 'a', 'b', 'c']
stack.pop:66,xxt:[1, 2, 3, 'a', 'b', 'c']
'''

  

三、栈的相关概念:

 

  栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。

  压栈:栈的插入操作,叫做进栈,也称压栈、入栈,通常命名为push。

  弹栈:栈的删除操作,也叫做出栈,通常命名为pop。

 

OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

 

小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

重要的事多做几遍。。。。。。

wps6861.tmp

posted @ 2019-01-19 21:44  小婷儿  阅读(548)  评论(0编辑  收藏  举报
levels of contents