python: 栈

class SStack:
    def __init__(self, data=None):
        # if data is None:
        self.data = []
        # else:
        #     self.data = list(data)

    def isEmpty(self):
        return self.data == []

    def __len__(self):
        return len(self.data)

    def __str__(self):
        return str(self.data)

    def __iter__(self):
        return iter(self.data)


    def top(self):
        if self.data == []:
            raise ValueError("stack is empty")
        return self.data[-1]

    def push(self, other):
        self.data.append(other)

    def pop(self):
        if self.data == []:
            raise ValueError("stack is empty")
        return self.data.pop()


class Node:
    def __init__(self, data, next=None):
        self.data = data
        self.next = next

    def __str__(self):
        return str(self.data)


class LStack:
    def __init__(self):
        self._top = None

    def is_empty(self):
        return self._top is None

    def top(self):
        if self._top is None:
            raise ValueError("stack is empty")
        return self._top

    def push(self, data):
        self._top = Node(data, self._top)

    def pop(self):
        if self._top is None:
            raise ValueError("stack is empty")

        p = self._top
        self._top = p.next
        return p.data


sl = LStack()
sl.push(3)
sl.push(4)
sl.push(5)
print(sl.pop())
print(sl.pop())
# s1 = SStack()
# s2 = SStack()
# for i in range(2, 9):
#     s1.push(i)
#     s2.push(i)
# print(len(s1))

猜你喜欢

转载自blog.csdn.net/lalalala_CG/article/details/84189188