/*
* File: queue.cpp* Author: dk
*
* Created on September 9, 2016, 5:06 PM
* Note : Implementation of Queues with only head pointer, enqueue is O(1) and
* dequeue is O(n) operation.
*/
#include <iostream>
using namespace std;
struct queue_node{
int var;
queue_node *next;
};
queue_node *EnQueue(queue_node **head , int val){
queue_node *temp = (*head);
queue_node *new_node = new queue_node;
temp->var = val;
new_node->next = NULL;
if (temp != NULL)
new_node->next = (*head);
(*head) = new_node;
return new_node;
}
int QueueSize(queue_node **head){
queue_node *temp = (*head);
int queue_size = 0;
while (temp->next != NULL) {
++queue_size;
temp = temp->next;
}
return queue_size;
}
void DeQueue(queue_node **head){
queue_node *temp = (*head);
queue_node *prev = (*head);
if(temp->next == NULL){
cout << "Empty Queue" << endl;
return;
}
while(temp->next != NULL) {
prev = temp ;
temp = temp->next;
}
prev->next = NULL;
cout << "Dequeued value is : " << temp->var << endl;
delete temp;
}
/*
*
*/
int main(int argc, char** argv) {
queue_node *head = new queue_node;
head->next = NULL;
EnQueue(&head , 1);
EnQueue(&head , 2);
EnQueue(&head , 3);
EnQueue(&head , 4);
cout << "Queue Size : " << QueueSize(&head) << endl;
DeQueue(&head);
DeQueue(&head);
DeQueue(&head);
DeQueue(&head);
cout << "Queue Size : " << QueueSize(&head) << endl;
DeQueue(&head);
delete head;
return 0;
}
Output :
Queue Size : 4
Dequeued value is : 1
Dequeued value is : 2
Dequeued value is : 3
Dequeued value is : 4
Queue Size : 0
Empty Queue
No comments:
Post a Comment