MAXSIZE = 100
class SqStack:
    # 初始化

    def __init__(self):
        self.elem = [None] * MAXSIZE
        self.top, self.base = 0, 0
        self.stack_size = MAXSIZE

    # 入栈

    def Push(self, e):
        if self.top - self.base == self.stack_size:
            raise Exception("栈空间已满")
        self.elem[self.top] = e
        self.top += 1

    # 出栈

    def pop(self):
        if self.top == self.base:
            raise Exception("栈已空")
        self.top -= 1
        return self.elem[self.top]

    # 读栈找顶元素

    def get_top(self):
        if self.top != self.base:
            return self.elem[self.top - 1]
        else:
            raise Exception("栈已空")

    def stack_empty(self):
        return self.top == self.base

    def __len__(self):
        return self.top - self.base

    def __str__(self):
        return str(self.elem[self.base:self.top])


if __name__ == "__main__":
    s = SqStack()
    s.Push(10)
    s.Push(12)
    s.Push(13)
    print("元素入栈以后的栈为:", s)
    print("栈的长度为", len(s))
    print("栈顶元素为:", s.get_top())