Monday, 19 September 2016

Singly Linked List: Create a list

Singly Linked List: Create a list


#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

struct node

{
         int data;
         struct node *link;
};
typedef struct node * NODE;

NODE getnode()

{
          NODE x;
          x = (NODE)malloc(sizeof(struct node));
          if(x == NULL)
          {
                       printf("\nInsufficient memory");
                      exit(0);
          }
          x->link = NULL;
          return x;
}

NODE insert_at_end(NODE first)

{
           int val;
           NODE temp, cur;
           temp = getnode();

           printf("\nEnter the value: ");

           scanf("%d", &val);
           temp->data = val;

            /*Case 1: List is empty*/

            if(first == NULL)
                         return temp;

            /*Case 2: List has nodes: Traverse till the end of the list*/

            cur = first;
            while(cur->link!=NULL)
            {
                      cur = cur->link;
            }

            /*Set the link field of last node to point to temp node*/

           cur->link = temp;
           return first;
}


NODE create_list(NODE first)

{
              int i, n;
              printf("\nCreating the list: ");
              printf("\nEnter the number of nodes: ");
              scanf("%d", &n);

              /*Number of nodes 0*/

              if(n==0)
                              return first;

              printf("\nEnter the VALUES for nodes: ");

              for(i=1;i<=n;i++)
                            first= insert_at_end(first);
              return first;
}


void display(NODE first)

{
            NODE cur;
            cur = first;
            printf("\nContents are:");
            if(cur == NULL)
                              printf("\nList is empty. Nothing to display.");
            else
           {
                          while(cur!=NULL)
                         {
                                    printf("%d  ", cur->data);
                                    cur = cur->link;
                         }
            }
}

void main()

{
            int ch;
            NODE first = NULL;
            first = create_list(first);
            display(first);
}

Output:


Creating the list:

Enter the number of nodes: 4

Enter the VALUES for nodes:

Enter the value: 11
Enter the value: 12
Enter the value: 13
Enter the value: 14
Contents are:11  12  13  14