コード例 #1
0
class SLLStack(object):
    def __init__(self):
        self.size = 0
        self._data = SinglyLinkedList()

    def __len__(self):
        return self.size

    def build(self, list_object):
        if not isinstance(list_object, list):
            return TypeError('build method only accepts object of type list.')

        for i in list_object:
            self._data.add_value(i)
            self.size += 1

    def is_empty(self):
        return self.size == 0

    def push(self, e):
        self.size += 1
        self._data.add_value(e)

    def pop(self):
        if self.is_empty():
            raise IndexError("Stack is empty")
        top = self._data.head.value
        self._data.delete_node(self._data.head)
        self.size -= 1
        return top

    def top(self):
        if self.is_empty():
            raise IndexError("Stack is empty")
        return self._data.head.value