2

I am implementing a priority queue using a singly sorted linked list. How do I do the peek method? It is supposed to return 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.

Would I simply just return a part of my dequeued function or would I do something else??

My Code:

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 ) :
Noumenon
  • 5,099
  • 4
  • 53
  • 73
lindsay
  • 41
  • 1
  • 8

1 Answers1

1
Def Peek():
    if not self.empty():
        return self.head.cargo
    else:
        return None
Saicharan S M
  • 828
  • 3
  • 11
  • 25