数据结构 | Python实现链表队列 | 源码和示例

python 复制代码
# Linked list node class
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# Queue class
class Queue:
    def __init__(self):
        self.front = None  # Queue front
        self.rear = None  # Queue rear

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

    def enqueue(self, val):
        new_node = ListNode(val)
        if self.rear is None:
            self.front = self.rear = new_node
            return
        self.rear.next = new_node
        self.rear = new_node

    def dequeue(self):
        if self.is_empty():
            return "Queue is empty"
        val = self.front.val
        self.front = self.front.next
        if self.front is None:
            self.rear = None
        return val

    def peek(self):
        if self.is_empty():
            return "Queue is empty"
        return self.front.val

    def size(self):
        count = 0
        cur = self.front
        while cur:
            count += 1
            cur = cur.next
        return count

def main():
    # Create a new queue
    my_queue = Queue()

    # Check if the queue is empty
    print("Is the queue empty?", my_queue.is_empty())

    # Enqueue elements to the queue
    my_queue.enqueue(1)
    my_queue.enqueue(2)
    my_queue.enqueue(3)

    # Output the elements of the queue
    print("Queue elements:")
    cur = my_queue.front
    while cur:
        print(cur.val, end=" ")
        cur = cur.next
    print()

    # Check the size of the queue
    print("Queue size:", my_queue.size())

    # Peek at the front element of the queue
    print("Front element:", my_queue.peek())

    # Dequeue elements from the queue
    dequeued_item = my_queue.dequeue()
    print("Dequeued item:", dequeued_item)

    # Check the size of the queue after dequeue
    print("Queue size after dequeue:", my_queue.size())

    # Check if the queue is empty again
    print("Is the queue empty now?", my_queue.is_empty())

    # Output the elements of the queue
    print("Queue elements:")
    cur = my_queue.front
    while cur:
        print(cur.val, end=" ")
        cur = cur.next
    print()
    
if __name__ == "__main__":
    main()

结果:

Is the queue empty? True

Queue elements:

1 2 3

Queue size: 3

Front element: 1

Dequeued item: 1

Queue size after dequeue: 2

Is the queue empty now? False

Queue elements:

2 3

相关推荐
2301_8152795237 分钟前
SQL如何利用聚合函数生成业务分析指标_KPI计算基础教程
jvm·数据库·python
qq_3300379938 分钟前
mysql如何排查Out of memory错误_mysql内存分配调优
jvm·数据库·python
好家伙VCC39 分钟前
**发散创新:用Rust实现基于RAFT共识算法的轻量级分布式日志系统**在分布式系统中,**一致性协议**是保障数据可靠
java·分布式·python·rust·共识算法
weixin_458580122 小时前
如何在 Go 中直接将 AST 编译为可执行二进制文件?
jvm·数据库·python
2301_816660217 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
第一程序员7 小时前
数据工程 pipelines 实践
python·github
励志的小陈7 小时前
数据结构--二叉树知识讲解
数据结构
知行合一。。。7 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
郝学胜-神的一滴7 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
笨笨饿8 小时前
#58_万能函数的构造方法:ReLU函数
数据结构·人工智能·stm32·单片机·硬件工程·学习方法