栈与双端队列

ps:栈的本质是列表,双端队列的本质也是列表
下图是基础代码及验证实例:
1、栈

class Stack(object):
    '''栈'''
    def __init__(self):
        self.__items=[]

    def is_empty(self):
        '''判断是否为空'''
        return self.__items == []
    def push(self,items):
        '''往尾部加入元素'''
        self.__items.append(items)
    def peek(self):
        '''栈顶元素保持不变,只是查看'''
        if self.__items:
            return self.__items[-1]
        else:
            return []

    def pop(self):
        '''出栈'''
        return self.__items.pop()
    def is_empty(self):
        '''判断是否为空'''
        return not self.__items

    def size(self):
        '''返回的个数'''
        return len(self.__items)

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())

2、双端队列:

class Deque(object):
    def __init__(self):
        '''定义双端队列的列表'''
        self.__list = []
    def add_front(self,item):
        '''从头部增加元素'''
        self.__list.insert(0,item)
    def add_rear(self,item):
        '''从尾部增加元素'''
        self.__list.append(item)

    def pop_front(self):
        '''从队列头部删除元素'''
        return self.__list.pop(0)
    def pop_rear(self):
        '''从尾部删除元素'''
        return self.__list.pop()

    def is_empty(self):
        '''判断是否为空列表'''
        return self.__list == []
    def size(self):
        '''返回队列的大小'''
        return len(self.__list)


if __name__=="__main__":
    s = Deque()
    s.add_front(1)
    s.add_front(2)
    s.add_front(3)
    s.add_front(4)
    print(s.pop_rear())
    print(s.pop_rear())
    print(s.pop_rear())
    print(s.pop_rear())

猜你喜欢

转载自blog.csdn.net/xiaoyaosheng19/article/details/82824231