python實現stack(棧)和隊列(queue)

棧是先進後出 隊列先進先出
棧示意圖(順便治治頸椎):
在這裏插入圖片描述
隊列示意圖:
在這裏插入圖片描述
棧實現代碼:

class Stack(object):
    def __init__(self):
        self.stack = []

    def push(self, v):
        self.stack.append(v)

    def pop(self):
        if self.stack:
            # 推出棧
            return self.stack.pop()
        else:
            raise LookupError("stack is empty")

    def is_empty(self):
        return bool(self.stack)

    def top(self):
        return self.stack[-1]

隊列實現代碼:



class Head(object):
    def __init__(self):
        self.right = None
        self.left = None


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


class Queue(object):
    def __init__(self):
        self.head = Head()

    def queue(self, value):
        new_node = Node(value)
        head = self.head
        if head.right:
            tmp = head.right
            head.right = new_node
            tmp.next = new_node
        else:
            head.left = head.right = new_node

    def dequeue(self):
        if self.is_empty():
            raise LookupError('Queue is empty')
        head = self.head
        tmp = head.left
        if head.left == head.right:
            head.left = head.right = None
        else:
            head.left = tmp.next
        return tmp.value

    def is_empty(self):
        return not bool(self.head.left)

    def top(self):
        if self.is_empty():
            raise LookupError('Queue is empty')
        return self.head.left.value
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章