Insert New Node at end of Linked List


In order to insert a new node at the end of the list we have to follows the below steps:
(1) First we have to check weather free node is available in the Availability Stack or not. If free node is available then we can allocate memory to new node.
(2) After creating new node we have to check weather linked list is empty or not. We have two possibilities:
(A) Linked List is empty (FIRST=NULL). In this case the newly created node becomes the first node of linked list.
(B) Linked List is not empty (FIRST ≠ NULL). In this case we have to traverse from first node to last node in the list and insert new node at the end of linked list.

     

Algorithm to Insert New Node at end of Linked List


Step 1: If AVAIL=NULL then
              Write “Availability Stack is Empty”
           Else
           NEW_NODE=AVAIL
           AVAIL = AVAIL->LINK
Step 2: If FIRST = NULL then
              NEW_NODE -> INFO = X
           NEW_NODE -> LINK = NULL
           FIRST = NEW_NODE
           Else
           NEW_NODE -> INFO = X
           NEW_NODE -> LINK = NULL
           SAVE = FIRST
           Repeat while SAVE->LINK ≠ NULL
           SAVE = SAVE->LINK
           SAVE->LINK = NEW_NODE
Step 3: Exit


Program to Insert New Node at end of Linked List


#include<stdio.h>
#include<conio.h>
#include<alloc.h>
struct node
{
      int info;
      struct node *link;
};
struct node *FIRST;
void createlist()
{
      char ch;
      printf("Enter n for break\n");
      ch=getchar();
      while(ch!='n')
      {
      struct node *NEW_NODE,*SAVE;int x;
      NEW_NODE=(struct node *)malloc(sizeof(struct node));
      printf("Enter Data:");
      scanf("%d",&x);
      NEW_NODE->info=x;
      if(FIRST==NULL)
      {
         NEW_NODE->link=NULL;
         FIRST=NEW_NODE;
      }
      else
      {
         SAVE=FIRST;
         while(SAVE->link!=NULL)
         {
            SAVE=SAVE->link;
         }
         SAVE->link=NEW_NODE;
         NEW_NODE->link=NULL;
      }
      fflush(stdin);
      printf("Enter n for break\n");
      ch=getchar();
   }
}
void insertlast()
{
      struct node *NEW_NODE,*SAVE;int x;
      NEW_NODE=(struct node *)malloc(sizeof(struct node));
      printf("Enter Data:");
      scanf("%d",&x);
      NEW_NODE->info=x;
      if(FIRST==NULL)
      {
         NEW_NODE->link=NULL;
         FIRST=NEW_NODE;
      }
      else
      {
         SAVE=FIRST;
         while(SAVE->link!=NULL)
         {
            SAVE=SAVE->link;
         }
         SAVE->link=NEW_NODE;
         NEW_NODE->link=NULL;
      }
}
void display()
{
      struct node *SAVE;
      if(FIRST==NULL)
      {
         printf("Linked List is empty\n");
         return;
      }
      printf("elements are:\n");
      SAVE=FIRST;
      while(SAVE!=NULL)
      {
         if(SAVE->link==NULL)
         printf("|%d|",SAVE->info);
         else
         printf("|%d|->",SAVE->info);
         SAVE=SAVE->link;
      }
      printf("\n");
      return;
}
void main()
{
      clrscr();
      FIRST=NULL;
      createlist();
      display();
      insertlast();
      display();
      getch();
}

Download Projects


Download Programs