Tuesday, 9 October 2018

Implementation of Queue using Link List Functions

Implementation of Queue using Link List Functions


Function to Create an empty queue
create only pointer pointing to NULL
void create()
{
    front = rear = NULL;
}

Function for getting queue size 
Take a global variable count and display here.
At every time of enqueue increment count.
and in  dequeue function decrement count.

void queuesize()
{
    printf("\n Queue size : \'%d\'", count);
}

Function for Enqueing the queue

Add a node with Null pointer at rear side and update rear to new node.
void enq(int data)
{
    if (rear == NULL)
    {
        rear = (struct node *)malloc(1*sizeof(struct node));
        rear->ptr = NULL;
        rear->info = data;
        front = rear;
    }
    else
    {
        temp=(struct node *)malloc(1*sizeof(struct node));
        rear->ptr = temp;
        temp->info = data;
        temp->ptr = NULL;

        rear = temp;
    }
    count++; //count for counting number of nodes
}

Function for Displaying the queue elements
void display()
{
    front1 = front;

    if ((front1 == NULL) && (rear == NULL))
    {
        printf("Queue is empty");
        return;
    }
    while (front1 != rear)
    {
        printf("\'%d\' ", front1->info);
        front1 = front1->ptr;
    }
    if (front1 == rear)
        printf("\'%d\'", front1->info);
}

Function for Dequeing the queue

Update front pointer to next location and Remove old front element using dummy pointer as front1. 
void deq()
{
    front1 = front;

    if (front1 == NULL)
    {
        printf("\n Error: Trying to display elements from empty queue");
        return;
    }
    else
        if (front1->ptr != NULL)
        {
            front1 = front1->ptr;
            printf("\n Dequed value : %d", front->info);
            free(front);
            front = front1;
        }
        else
        {
            printf("\n Dequed value : %d", front->info);
            free(front);
            front = NULL;
            rear = NULL;
        }
        count--; // decrement count of total nodes
}

Function to display front element of queue
int frontelement()
{
    if ((front != NULL) && (rear != NULL))
        return(front->info);
    else
        return 0;
}

Function for Display if queue is empty or not
If front and rear both are pointing to Null then queue is empty.
void empty()
{
     if ((front == NULL) && (rear == NULL))
        printf("\n Queue empty");
    else
       printf("Queue not empty");
}


/*
Output
1-Enque                                                                                                                       
 2 - Deque                                                                                                                      
 3 - Front element                                                                                                               
 4 - Empty                                                                                                                      
 5 - Display                                                                                                                     
 6 - Queuesize                                                                                                                  
 7 - Exit                                                                                                                        
 Enter choice : 1                                                                                                               
Enter data for Enque: 10                                                                                                         
                                                                                                                                
 Element of Queue after Enqueque operation:'10'                                                                                  
 Enter choice : 1                                                                                                               
Enter data for Enque: 20                                                                                                         
                                                                                                                                
 Element of Queue after Enqueque operation:'10' '20'                                                                             
 Enter choice : 1                                                                                                               
Enter data for Enque:                                                                                                            
30                                                                                                                              
                                                                                                                                 
 Element of Queue after Enqueque operation:'10' '20' '30'                                                                       
 Enter choice : 2
 Dequed value : 10                                                                                                              
 Element of Queue after deque operation:'20' '30'                                                                                
 Enter choice : 3                                                                                                               
Front element : 20                                                                                                               
 Enter choice : 4                                                                                                               
Queue not empty                                                                                                                  
 Enter choice : 5                                                                                                               
'20' '30'                                                                                                                        
 Enter choice : 6                                                                                                               
                                                                                                                                 
 Queue size : '2'                                                                                                               
 Enter choice : 7                                                                                                                
                                                                                                                                
                                                                                                                                 
...Program finished with exit code 0                                                                                            
Press ENTER to exit console. 
           

*/

No comments:

Post a Comment