算法与数据结构web服务器数据结构

2018-11-12  本文已影响3人  GHope

栈是一个后进先出(LIFO)的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出。栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 。

在栈中, push 和 pop 是常用术语:
push: 意思是把一个对象入栈
pop: 意思是把一个对象出栈

我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的append()和pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。

Python代码实现

class Stack:
    """
    栈:先进后出
    """

    def __init__(self, max_size):
        self.max_size = max_size
        self.stack = []
        self.top = -1

    # 入栈
    def push(self, item):
        if self.full():
            raise Exception("stack is full")
        else:
            self.stack.append(item)
            self.top = self.top + 1

    # 出栈
    def pop(self):
        if self.empty():
            raise Exception("stack is empty")
        else:
            self.top = self.top - 1
            self.stack.pop()

    # 是否为空
    def empty(self):
        return self.top == -1

    # 是否已满
    def full(self):
        return self.top + 1 == self.max_size

    # 栈大小
    def size(self):
        return len(self.stack)

    # 根据下标获取目标
    def get(self, index):
        return self.stack[index]

    # 根据目标获取下标
    def index(self, item):
        return self.stack.index(item)

    # 显示栈内容
    def showStack(self):
        print(self.stack)


s = Stack(10)

for i in range(8):
    s.push(i)

# print(s.full())
# print(s.get(3))
# print(s.size())
# print(s.index(4))
print(s.showStack())

s.pop()

# print(s.size())
print(s.showStack())
上一篇 下一篇

猜你喜欢

热点阅读