title: Implementation of queue using linked list in c
body: <p>I am trying to implement queue using a linked list. I am using the following code but my display function is not working properly:</p>
  
  <p>What is wrong with my code?</p>
  
  <p>My Code:</p>
  
  <pre><code>#include&lt;stdio.h&gt;
  #include&lt;stdlib.h&gt;
  
  struct node
  {
      int info;
      struct node *link;
  }*front=NULL,*rear=NULL;
  
  void insert(int item);
  int del();
  int peek();
  int isEmpty();
  void display();
  
  main()
  {
      int choice,item;
      while(1)
      {       
          printf("1.Insert\n");
          printf("2.Delete\n");
          printf("3.Display the element at the front\n");
          printf("4.Display all elements of the queue\n");
          printf("5.Quit\n");
          printf("Enter your choice : ");
          scanf("%d", &amp;choice);
  
          switch(choice)
          {
          case 1:
              printf("Input the element for adding in queue : ");
              scanf("%d",&amp;item);
              insert(item);
              break;
          case 2:
              printf("Deleted element is  %d\n",del());
              break;
          case 3:
              printf("Element at the front of the queue is %d\n", peek() );
              break;
          case 4:
              display();
              break;
          case 5:
              exit(1);
          default :
              printf("Wrong choice\n");
          }
      }
  }
  
  void insert(int item)
  {
      struct node *tmp;
      tmp=(struct node *)malloc(sizeof(struct node));
      if(tmp==NULL)
      {
          printf("Memory not available\n");
          return;
      }
      tmp-&gt;info = item;
      tmp-&gt;link=NULL;
      if(front==NULL)      /*If Queue is empty*/
          front=tmp;
      rear=tmp;
  }
  
  int del()
  {
      struct node *tmp;
      int item;
      if( isEmpty( ) )
      {
          printf("Queue Underflow\n");
          exit(1);
      }
      tmp=front;
      item=tmp-&gt;info;
      front=front-&gt;link;
      free(tmp);
      return item;
  }
  
  int peek()
  {
      if( isEmpty( ) )
      {
          printf("Queue Underflow\n");
          exit(1);
      }
      return front-&gt;info;
  }
  
  int isEmpty()
  {
      if(front==NULL)
          return 1;
      else
          return 0;
  
  }
  
  void display()
  {
      struct node *ptr;
      ptr=front;
      if(isEmpty())
      {
          printf("Queue is empty\n");
          return;
      }
      printf("Queue elements :\n\n");
      while(ptr!=NULL)
      {
          printf("%d ",ptr-&gt;info);
          ptr=ptr-&gt;link;
      }
      printf("\n\n");
  }
  </code></pre>