python实现链式的栈

链式栈

class Node:
    '''节点类'''
    def __init__(self, value=None):
        self.value = value
        self.next = None

class LinkListStack:
    '''栈'''    
    def __init__(self):
        '''初始化一个空栈'''
        self.head = None

    def is_empty(self):
        """判断是否为空"""
        return self.head == None

    def push(self, value):
        """入栈"""
        node = Node(value) 
        node.next = self.head
        self.head = node
    
    def pop(self):
        '''出栈'''
        if self.is_empty():
            '''如果为空'''
            raise Exception('pop from an empty stack')

        value = self.head.value
        self.head = self.head.next
        return value

    def peek(self):
        '''查看栈顶元素'''
        if self.is_empty():
            raise Exception('stack is empty')
        
        return self.head.value

    def size(self):

        cur = self.head
        count = 0
        while cur:
            count += 1
            cur = cur.next
        return count    # 信手拈来

if __name__ == "__main__":
    s = LinkListStack()
    s.push(1)
    s.push(2)
    print(s.peek()) # 2
    # print(s.pop())  # 2
    # print(s.pop())  # 1
    # print(s.pop())  # error
    print(s.size())   # 0

猜你喜欢

转载自blog.csdn.net/weixin_45228198/article/details/114114160
今日推荐