您当前的位置:首页 > 计算机 > 编程开发 > Python

对Python列表进行封装和二次开发实现自定义栈结构

时间:09-09来源:作者:点击数:

设计自定义栈类,模拟入栈、出栈、判断栈是否为空、是否已满以及改变栈大小等操作。

class Stack:

    #构造方法

    def __init__(self, maxlen = 10):

        self._content = []

        self._size = maxlen

        self._current = 0

    #析构方法,释放列表控件

    def __del__(self):

        del self._content

    #清空栈中的元素

    def clear(self):

        self._content = []

        self._current = 0

    #测试栈是否为空

    def isEmpty(self):

        return not self._content

    #修改栈的大小

    def setSize(self, size):

        #不允许新大小小于已有元素数量

        if size < self._current:

            print('new size must >=' + str(self._current))

            return

        self._size = size

        

    #测试栈是否已满

    def isFull(self):

        return self._current == self._size

    #入栈

    def push(self, v):

        if self._current < self._size:

            #在列表尾部追加元素

            self._content.append(v)

            #栈中元素个数加1

            self._current = self._current + 1

        else:

            print('Stack Full!')

    #出栈

    def pop(self):

        if self._content:

            #栈中元素个数减1

            self._current = self._current - 1

            #弹出并返回列表尾部元素

            return self._content.pop()

        else:

            print('Stack is empty!')

            

    def __str__(self):

        return 'Stack(' + str(self._content) +', maxlen=' + str(self._size) + ')'

    #复用__str__方法的代码

    __repr__ = __str__

将代码保存为myStack.py文件,下面的代码演示了自定义栈结构的用法。

>>> from myStack import Stack  #导入自定义栈

>>> s = Stack()    #创建栈对象

>>> s.push(5)   #元素入栈

>>> s.push(8)

>>> s.push('a')

>>> s.pop()  #元素出栈

'a'

>>> s.push('b')

>>> s.push('c')

>>> s   #查看栈对象

Stack([5, 8, 'b', 'c'], maxlen=10)

>>> s.setSize(8)   #修改栈大小

>>> s

Stack([5, 8, 'b', 'c'], maxlen=8)

>>> s.setSize(3)

new size must >=4

>>> s.clear() #清空栈元素

>>> s.isEmpty()

True

>>> s.setSize(2)

>>> s.push(1)

>>> s.push(2)

>>> s.push(3)

Stack Full!

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门