关闭

类练习题2:堆栈和队列类

标签: pythonpython class
597人阅读 评论(0) 收藏 举报
分类:

该练习题来自(Python 核心编程 第二版)第13章 练习题13-10, 题目如下:


13-10.堆栈和队列。编写一个类,定义一个能够同时具有堆栈(FIFO)和队列(LIFO)操作行为的数据结构。这个类和Perl语言中数组相像。需要实现四个方法:

shift()  返回并删除列表中的第一个元素。

unshift()  在列表的头部"压入"一个新元素。

push()  在列表的尾部加上一个新元素。

pop()  返回并删除列表中的最后一个元素。


下面是我写的该例题代码,供以后参考:

#!/usr/bin/env python
 
class StackQueue(object):
    '''Class StackQueue().
 
    The class supports two data structures
    for both stack and queue.
    '''
 
    def __init__(self):
        self.__list = [] 
     
    def __str__(self):
        return str(self.__list)
 
    __repr__ = __str__
 
    def shift(self):
        '''
        Delete a element from the front of a list.
        '''
        try:
            print self.__list[0]
        except IndexError:
            print "can't delete a element from a empty list."
        else:
            self.__list = self.__list[1:]
 
    def unshift(self, element):
        '''
        Press a new element into the head of the list.
        '''
        self.__list.insert(0, element)
 
    def push(self, element):
        '''
        Add a new element to the end of the list.
        '''
        self.__list.append(element)
 
    def pop(self):
        '''
        Return and remove the last element in the list.
        '''
        if hasattr(list, 'pop'):
            print self.__list.pop()
        else:
            try:
                print self.__list[-1]
            except IndexError:
                print "can't delete a element from a empty list."
            else:
                self.__list = self.__list[:-1]
 
def _test():
    a = StackQueue()
    print a
    a.push(2)
    a.unshift(1)
    a.push(3)
    print a
    a.shift()
    print a
    a.pop()
    print a
 
if __name__ == "__main__":
    _test()


该脚本可以作为模块导入使用,也可以直接运行,直接运行结果如下:

[]

[1, 2, 3]

1

[2, 3]

3

[2]

0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:135033次
    • 积分:2287
    • 等级:
    • 排名:第17175名
    • 原创:89篇
    • 转载:56篇
    • 译文:0篇
    • 评论:9条
    最新评论