Queue based on the linked list


# include <stdio.h>
# include <stdlib.h>
struct node
{
   int data;
   struct node *link;
};

void insert(struct node **front, struct node **rear, int value)
{
   struct node *temp;
   temp=(struct node *)malloc(sizeof(struct node));
   if(temp==NULL)
   {
      printf("No Memory available Error\n");
      exit(0);
   }
   temp->data = value;
   temp->link=NULL;
   if(*rear == NULL)
   {
      *rear = temp;
      *front = *rear;
   }
   else
   {
      (*rear)->link = temp;
      *rear = temp;
   }
}

void delete(struct node **front, struct node **rear, int *value)
{
   struct node *temp;
   if((*front == *rear) && (*rear == NULL))
   {
      printf(" The queue is empty cannot delete Error\n");
      exit(0);
   }
   *value = (*front)->data;
   temp = *front;
   *front = (*front)->link;
   if(*rear == temp)
   *rear = (*rear)->link;
   free(temp);
}

main()
{
   struct node *front=NULL,*rear = NULL;
   int n,value;

   insert(&front,&rear,1);
   insert(&front,&rear,2);  
   insert(&front,&rear,3);
   insert(&front,&rear,4);

   delete(&front,&rear,&value);
   printf("The value deleted is %d\n",value);

   delete(&front,&rear,&value);
   printf("The value deleted is %d\n",value);

   delete(&front,&rear,&value);
   printf("The value deleted is %d\n",value);

   getch();
}

Comments

Popular posts from this blog

Migrating database from ASP.NET Identity to ASP.NET Core Identity

Customize User's Profile in ASP.NET Identity System

Lambda two tables and three tables inner join code samples