// Implementation of Queue using doubly linkedlist
class QNode{
int val;
QNode next, prev;
public QNode(int val)
{
this.val = val;
this.next = this.prev = null;
}
}
class Queue{
private QNode front, rear, middle;
private int count;
void enqueue(int d)
{
QNode node = new QNode(d);
count++;
if(isEmpty())
{
front = rear = middle = node;
}else{
rear.next = node;
node.prev = rear;
rear = rear.next;
if((count&1) == 1) middle = middle.next;
}
}
int dequeue()
{
int r = -1;
if(!isEmpty())
{
if(front == rear)
{
r = front.val;
front = rear = middle = null;
count--;
}else{
r = front.val;
front = front.next;
count--;
}
if((count & 1) != 0 && middle != null)
{
middle = middle.next;
}
}
return r;
}
int middleElement()
{
if(!isEmpty())
return middle.val;
return -1;
}
void deleteElement()
{
if(middle.prev == null && front != null)
{
System.out.println("Deleted:"+middle.val);
front = front.next;
if(front != null){
front.prev = null;
middle = front;
}
count--;
}else
if(middle != null)
{
System.out.println("Deleted:"+middle.val);
middle.prev.next = middle.next;
middle.next.prev = middle.prev;
count--;
if((count & 1) != 0 && middle != null) //odd
{
middle = middle.next;
}else
{
middle = middle.prev;
}
}
}
boolean isEmpty()
{
if(front == null) return true;
return false;
}
public static void main(String args[])
{
Queue q = new Queue();
q.enqueue(2);
q.enqueue(5);
q.enqueue(6);
q.enqueue(8);
//System.out.println(q.middleElement());
q.deleteElement();
q.deleteElement();
q.deleteElement();
q.deleteElement();
System.out.println(q.middleElement());
}
}
Monday, October 13, 2014
Implement Queue using doubly linkedlist
Sunday, October 12, 2014
Merge a linked list into another linked list at alternate positions
// Merging Two list into single List
public static ListNode mergeList(ListNode h1, ListNode h2)
{
if(h1==null && h2 == null) return null;
ListNode c1,c2, t1,t2;
for(c1 = h1, c2 = h2; c1!=null && c2!=null; )
{
t1 = c1.next;
t2 = c2.next;
c2.next = c1.next;
c1.next = c2;
c1 = t1;
c2 = t2;
}
if(c1 == null)
h2 = c2;
else
h2 = null;
return h2;
}
Subscribe to:
Posts (Atom)