Data structures : Queue using pointers program

#include
struct node
{
int data;
struct node *next;
};
struct node *front=NULL,*rear=NULL;

void enqueue()
{
struct node *temp;
int val;
temp=(struct node *)malloc(sizeof(struct node));
printf("\nEnter the value : ");
scanf("%d",&val);
temp->data=val;
temp->next=NULL;
if (rear==NULL)
front=rear=temp;
else
{
rear->next=temp;
rear=temp;
}
}

void dequeue()
{
struct node *temp;
int x;
if (front==NULL)
printf("\nQueue is Empty!");
else
{
if (front==rear)
{
printf("\n%d deleted",front->data);
front=rear=NULL;
}
else
{
temp=front;
front=front->next;
printf("\n%d deleted!",temp->data);
free(temp);
}
}
}

void display()
{
struct node *temp;
printf("\nThe elements in the queue are...\n");
for(temp=front;temp!=NULL;temp=temp->next)
printf("%d\n",temp->data);
}

main()
{
int choice;
void enqueue();
void dequeue();
void display();
printf("\n1-Insert 2-Delete 3-Display 4-Exit ");
do
{
printf("\nEnter your choice : ");
scanf("%d",&choice);
switch(choice)
{
case 1: enqueue(); break;
case 2: dequeue(); break;
case 3: display(); break;
}
}while(choice!=4);
}

No comments: