Microsoft Interview Question

Create a Priority Queue with all methods.

Interview Answers

Anonymous

Oct 19, 2012

import java.util.*; public class PriorityQueue { List queue=new ArrayList(); public PriorityQueue() { } public boolean isEmpty() { return queue.isEmpty(); } public String delete() { //returns the node with the highest priority int size=queue.size(); if(size==0) return null; String result= queue.get(0).data; queue.get(0).data=queue.get(size-1).data; queue.get(0).priority=queue.get(size-1).priority; queue.remove(size-1); if(size-1>1) reHeap(0,size-1); return result; } private void reHeap(int current,int size) { int left=2* current +1; if(left>=size) return; int biggest; if(queue.get(current).priority0 && queue.get(n).priority > queue.get(parent).priority ) { int tempP=queue.get(n).priority; queue.get(n).priority=queue.get(parent).priority; queue.get(parent).priority=tempP; String tempD=queue.get(n).data; queue.get(n).data=queue.get(parent).data; queue.get(parent).data=tempD; n=parent; parent=(n-1)/2; } } private class Node { int priority; String data; public Node() { } public Node(int p, String d) { priority=p; data=d; } public int getPriority() { return priority; } public String getData() { return data; } } }

1

Anonymous

Nov 6, 2012

In C++ _________________________________________ #include #include "math.h" #include using namespace std; class PriorityQueue { public: void insertElement(int value) { // Insert the new element at the end and re-heapify the tree m_queue.push_back(value); // Last element inserted is at position m_queue.length()-1 int pos = (int)m_queue.size(); if(pos == 1) return; // One element, already heapified else swim_up(pos); } void printArray() { cout ::iterator it = m_queue.begin(); it != m_queue.end(); it++) { cout m_queue[posMin-1]) { swap(m_queue[fatherpos-1], m_queue[posMin-1]); swim_up(fatherpos); } } else { // Even, first child int fatherpos = pos / 2; if(m_queue[fatherpos-1] > m_queue[pos-1]) { swap(m_queue[fatherpos-1], m_queue[pos-1]); swim_up(fatherpos); } } } vector m_queue; }; int main() { PriorityQueue myQueue; myQueue.insertElement(88); myQueue.insertElement(7); myQueue.insertElement(5); myQueue.insertElement(4); myQueue.insertElement(3); myQueue.insertElement(2); myQueue.insertElement(1); myQueue.printArray(); int top_element = myQueue.deleteMinElement(); myQueue.printArray(); return 0; }

Microsoft Interview Question: Create a Priority Queue with all methods. | Glassdoor