微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linked Stack in Python

Linked Stack in Python

1. Node

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

2. Stack

class Stack:
    def __init__(self):
        self.size = 0
        self.top = None
    
    def push(self, data):
        n = Node(data)
        if self.top:
            n.next = self.top
        self.top = n
        self.size += 1
    
    def peek(self):
        return self.top if not self.empty() else None
    
    def pop(self):
        ptr = None
        if not self.empty():
            ptr = self.top
            self.top = ptr.next
            self.size -= 1
        return ptr       
    
    def empty(self):
        return self.size == 0
    
    def size(self):
        return self.size
    
    def traverse(self):
        print(f"The current length: {self.size}")
        for val in self.iter():
            print(val)
    
    def iter(self):
        ptr = self.top
        while ptr:
            val = ptr.data
            ptr = ptr.next
            yield val

3. Test Codes

def test_stack():
    s = Stack()
    s.push("eggs")
    s.push("ham")
    s.push("spam")
    
    print('-' * 15)
    s.traverse()
    
    print('-' * 15)
    p = s.pop()
    s.traverse()
    
    while not s.empty():
        ptr = s.pop()
        if ptr:
            print(ptr, " is poped.")
        s.traverse()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐