+1 vote
469 views
Which of the following statement is/are correct?

1. If we use only Front pointer in queue, then insertion takes O(n) time while deletion in O(1) time.

2. If we use only Rear pointer in queue, then insertion is O(1) and deletion is not possible.
asked in DS | 469 views
Tushar.... What type of Data structure you are assuming in thus scenario?

What u are talking about is not implemented in simple queue.

so both are false.

1..If we use only Front pointer in queue, then insertion takes O(n) time while deletion in O(1) time.  flase.

Deletion in O(1) time thats ok but if 1st element insert then u can delete second in O(1) time.

2..If we use only Rear pointer in queue, then insertion is O(1) and deletion is not possible.

insertion not possible b/c u can go in left direction in simple queue.

answered by Veteran (52.8k points) 21 71 325

Both 1st and 2nd statements are Correct only if we are using Simple List for queue implementation.

But only 1st statement is Correct if we are using Circular List for queue implementation.

In Simple list, if only FRONT is available we can perform delete operation in O(1) time and insert operation (using an extra pointer temp) in O(n) time.

In Simple list, if only REAR is available we can only perform insertion operation in O(1) time but no delete operation.

Its because, in simple list, Front/Rear pointer only moves in forward direction. Never backward.

BUT In Circular list, If only FRONT is available again we can perform delete operation in O(1) time and insert operation (using an extra pointer temp) in O(n) time.

While If only REAR is available then both Insertion and deletion can be performed in O(1) time in Circular list.

Example : While using REAR in Circular list.

Insertion :

newNode --> next = rear --> next;

rear --> next = newNode;

rear = newNode;

Deletion :

temp = rear --> next;

rear --> next = temp --> next;

free(temp);

answered by Junior (725 points) 3 9
edited