queue by using linklist

#include <stdio.h>
#include <stdlib.h>
struct node
{
    int data;
    struct node *next;
};
typedef struct node Node;
struct qu
{
    struct node *Front;
    struct node *Rare;
};
void Inqueue(int data,struct qu *ptr);
void DisplayQueue(struct qu ptr);
void Dequeue(struct qu *ptr);
int main()
{
    struct qu* s;
    s->Front=NULL;
    s->Rare=NULL;
    int choice;
    while(1)
    {
        printf("\n");
        printf("Enter 1 for Inqueue data to queue,2 for DisplyDequeue\n");
        printf("Enter 3  for Dewueue data from queue,Enter 0 to stop\n");
        printf("Enter choice:");
        scanf("%d",&choice);
        if(choice<=0)
        {
            break;
        }
        else
        {
            switch(choice)
            {
            case 1:
                {
                    int data;
                    printf("Enter data to inqueue:");
                    scanf("%d",&data);
                    Inqueue(data,s);
                    break;
                }
            case 2:
                {
                    DisplayQueue(*s);
                    break;
                }
            case 3:
                {
                    printf("Checking for error in main\n");
                    Dequeue(s);
                    break;
                }
            default:
                {
                    printf("Check entered choice\n");
                    break;
                }
            }
        }
    }

    return 0;
}
void Inqueue(int data,struct qu *ptr)
{
   Node *PR=(Node *)malloc(sizeof(Node));
   PR->data=data;
   PR->next=NULL;
   if(ptr->Front==NULL && ptr->Rare==NULL)
   {
       ptr->Front=PR;
       ptr->Rare=PR;
   }
   ptr->Rare->next=PR;
   ptr->Rare=PR;

}
void DisplayQueue(struct qu ptr)
{
    if(ptr.Front==NULL && ptr.Rare==NULL)
    {
        printf("Queue is empty\n");

    }
    else
    {
        while(ptr.Front!=NULL)
        {
            printf("%d ",ptr.Front->data);
            ptr.Front=ptr.Front->next;
        }
    }
}
void Dequeue(struct qu *ptr)
{
    printf("Address of front is :%u\n",ptr->Front);
    printf("Address of rare is :%u\n",ptr->Rare);

    if(ptr->Front==NULL && ptr->Rare==NULL)
    {
        printf("Queue is empty\n");
    }
    else
    {
         Node *n;
         n=ptr->Front;
         if(ptr->Front==ptr->Rare)
         {
             ptr->Front=NULL;
             ptr->Rare=NULL;
         }
         else{
              n=ptr->Front;
              ptr->Front=n->next;
              free(n);
    }
}
}


Post a Comment

0 Comments