您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

王争数据结构与算法,王争 数据结构

来源:互联网 浏览:49次 时间:2023-04-08
如何理解队列

先进者先出,这就是典型的“队列”。

支持的操作

栈:入栈:push()? ? ? ?出栈:pop()

队列: 入队:enqueue()? ? 出队:dequeue()

所以,队列跟栈一样,也是一种操作受限的线性表数据结构。

作为一种基本的数据结构,队列应用非常广泛,特别是具有一些额外特性的队列,比如循环队列、阻塞队列、并发队列。它们在很多偏底层系统、框架、中间件的开发中,起着关键性的作用。

顺序队列和链式队列

同栈相同,用数组实现的队列叫作顺序队列,用链表实现的队列叫作链式队列

顺序队列简单代码:

""" Queue based upon array 用数组实现的队列 Author: Wenru"""from typing import Optionalclass ArrayQueue: def __init__(self, capacity: int): self._items = [] self._capacity = capacity self._head = 0 self._tail = 0 def enqueue(self, item: str) -> bool: if self._tail == self._capacity: if self._head == 0: return False else: for i in range(0, self._tail - self._head): self._items[i] = self._items[i + self._head] self._tail = self._tail - self._head self._head = 0 self._items.insert(self._tail, item) self._tail += 1 return True def dequeue(self) -> Optional[str]: if self._head != self._tail: item = 便宜香港vps self._items[self._head] self._head += 1 return item else: return None def __repr__(self) -> str: return " ".join(item for item in self._items[self._head : self._tail])

比起栈的数组实现,队列的数组实现稍微复杂一点。因为对于栈来说,我们只需要一个栈顶指针就可以了。但是队列需要两个指针:一个是head指针,指向队头;一个是tail指针,指向队尾。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

92312165