Mega Code Archive

 
Categories / C Tutorial / Data Structure
 

A 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); } void 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); } The value deleted is 1 The value deleted is 2 The value deleted is 3