DS – Queue implementation using Pointers

#include<stdio.h>
#include<stdlib.h>
int *queue , *front, *rear, min, curr;
void create(void);
void insert(int);
void delete(void);
void traverse(void);
void main()
{
            int ch , ele, status ;
            printf(“Enter minimum capacity of Queue : “);
            scanf(“%d”, &min);
            create();
            while(1)
            {
                        printf(“1.Insert \n”);
                        printf(“2.Delete \n”);
                        printf(“3.Traverse \n”);
                        printf(“4.Quit \n”);
           
                        printf(“Enter choice : “);
                        scanf(“%d”, &ch);
                       
                        if(ch==1)
                        {
                                    printf(“Enter element : “);
                                    scanf(“%d”, &ele);
                        }
                        switch(ch)
                        {
                                    case 1 :            insert(ele);
                                                            break ;
                                   
                                    case 2 :            delete();
                                                            break ;
                                   
                                    case 3 :            traverse();
                                                            break ;
                                     
                                    case 4 :            exit(1);
                                    default: printf(“Invalid choice\n\n”);
                        }
            }
}
 
void create(void)
{
            queue = (int*)calloc(min, sizeof(int));
            if(queue != NULL)
            {
                        front = rear = queue;
                        curr = min;
                        printf(“Queue is Ready \n”);
            }
            else
            {
                        printf(“Out of memory….\n\n”);
            }
}
 
void insert(int ele)
{
            if(rear == front+curr)
            {
                        curr++;
                        queue = (int*)realloc(queue, curr*sizeof(int));
                        *rear = ele ;
                        rear++ ;                      
                        printf(“Element inserted into Queue\n\n”);
            }
            else
            {
                        *rear = ele;
                        rear++ ;
                        printf(“Element inserted into Queue\n\n”);
            }
}
 
void delete(void)
{
            if(front==rear)
                        printf(“Queue is empty\n”);
            else
            {
                        int* i;
                        printf(“Deleted : %d\n”, *front);
                        for(i=front ; i<rear-1 ; i++)
                        {
                                    *i = *(i+1);
                        }
                        rear– ;
                        if(curr > min)
                        {
                                    curr–;
                                    queue = (int*)realloc(queue, curr*sizeof(int));
                        }
            }
}                      
 
void traverse(void)
{
            if(front == rear)
                        printf(“Queue is underflow\n\n”);
            else
            {
                        int *i ;
                        printf(“Stack elements :\n”);
                        for(i=front ; i<rear ; i++)
                        {
                                    printf(“%d\n”,*i);
                        }
            }
}
Scroll to Top