gpt4 book ai didi

python - 优先队列的 Peek 方法

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:16 26 4
gpt4 key购买 nike

我正在使用单排序链表实现优先级队列。我如何使用 peek 方法?它应该返回队列中下一个项目的副本,而不删除该项目。下一项与出列操作返回的值相同。项目不能从空队列中取出。

我会简单地返回我的出队函数的一部分还是我会做其他事情??

我的代码:

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

# Creates a new empty unbounded priority queue
class PriorityQueue :


def __init__( self ) :
self.length = 0
self.head = None
self.last = None

# Returns a boolean value indicating whether the queue is empty
def isEmpty( self ) :
return (self.length == 0)

# Returns the number of items currently in the queue
def __len__( self ) :
return len(self.length)


# Adds the given item to the queue by inserting it in the proper position
# based on the given priority. The new node is appeneded to the end of the
# linked list
def enqueue( self, item, priority) :
newNode = Node(cargo)
newNode.next = None
if self.length == 0:
self.head self.last = newNode
newNode.next = self.head
self.head = newNode
self.last.next = newNode
self.last = newNode

temp = self.head
p = self.head.next
while p != None :
if p.cargo > newNode.cargo:
temp = temp.next
p = p.next
break
newNode.next = temp.next
temp.next = newNode


# Removes and returns the next item from the queue, which is the item with
# the highest priority. If two or more items have the same priority, those
# items are removed in FIFO order. An item cannot be dequeued from an
# empty queue. The linked list is searched to find the entry with the
# highest priority.
def dequeue( self ) :
cargo = self.head.cargo
self.head = self.head.next
self.length = self.length - 1
if self.length == 0:
self.last = None
return cargo


# Returns a copy of the next item in the queue, without removing the item.
# The next item is the same value that would be returned by the dequeue
# operation. An item cannot be dequeued from an empty queue.
def peek( self ) :

最佳答案

Def Peek():
if not self.empty():
return self.head.cargo
else:
return None

关于python - 优先队列的 Peek 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29639867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com