更新时间:2023-03-28 来源:黑马程序员 浏览量:
队列和栈是常见的数据结构,它们都用于存储和管理数据,但是它们在存储和访问数据的方式上有所不同。
队列是一种先进先出(FIFO)的数据结构,类似于排队。新的元素被添加到队列的尾部,而从队列中删除元素时,总是删除队列头部的元素。队列的常见操作包括入队(enqueue)和出队(dequeue)。
栈是一种后进先出(LIFO)的数据结构,类似于一摞书。新的元素被添加到栈的顶部,而从栈中删除元素时,总是删除栈顶的元素。栈的常见操作包括入栈(push)和出栈(pop)。
我们用一段Python代码来加以说明:
# 队列的实现 class Queue: def __init__(self): self.items = [] def enqueue(self, item): self.items.append(item) def dequeue(self): if self.is_empty(): return None return self.items.pop(0) def is_empty(self): return len(self.items) == 0 def size(self): return len(self.items) # 栈的实现 class Stack: def __init__(self): self.items = [] def push(self, item): self.items.append(item) def pop(self): if self.is_empty(): return None return self.items.pop() def is_empty(self): return len(self.items) == 0 def size(self): return len(self.items)
在上面的代码中,我们使用Python的列表来实现队列和栈。在队列中,我们使用append()方法将元素添加到列表的尾部,并使用pop(0)方法从列表的头部删除元素。在栈中,我们使用append()方法将元素添加到列表的末尾,并使用pop()方法从列表的末尾删除元素。
以下是使用队列和栈的示例代码:
# 使用队列实现广度优先搜索 def bfs(graph, start): visited = set() queue = Queue() queue.enqueue(start) while not queue.is_empty(): vertex = queue.dequeue() if vertex not in visited: visited.add(vertex) for neighbor in graph[vertex]: queue.enqueue(neighbor) return visited # 使用栈实现深度优先搜索 def dfs(graph, start): visited = set() stack = Stack() stack.push(start) while not stack.is_empty(): vertex = stack.pop() if vertex not in visited: visited.add(vertex) for neighbor in graph[vertex]: stack.push(neighbor) return visited
在上面的代码中,我们使用队列实现了广度优先搜索(BFS),并使用栈实现了深度优先搜索(DFS)。BFS和DFS是图论中常见的搜索算法,它们可以用来解决许多问题,例如寻找最短路径或拓扑排序等。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19