Program 12
Insertion in Linked
                                     list
#include<stdio.h>
#include<stdlib.h>
void beginsert(int);
struct node
{
     int data;
     struct node *next;
};
struct node *head;
void main ()
{
     int choice,item;
     do
     {
         printf("\nEnter the item which you want to insert?\
         n"); scanf("%d",&item);
         beginsert(item);
         printf("\nPress 0 to insert more ?\n");
         scanf("%d",&choice);
     }while(choice == 0);
}
void beginsert(int item)
     {
         struct node *ptr = (struct node *)malloc(sizeof(struct node
         *)); if(ptr == NULL)
     {
         printf("\nOVERFLOW\n");
     }
     else
     {
         ptr->data = item;
         ptr->next       =
         head; head = ptr;
         printf("\nNode inserted\n");
     }
OUTPUT:
                                             Program 13
                                   Deletion from Linkled
                                   List
#include<stdio.h>
#include<stdlib.h>
void create(int);
void begdelete();
struct node
{
     int data;
     struct node *next;
};
struct node *head;
void main ()
{
     int choice,item;
     do
     {
         printf("\n1.Append List\n2.Delete node\n3.Exit\n4.Enter your choice?");
         scanf("%d",&choice);
         switch(choice)
         {
             case 1:
             printf("\nEnter the item\n");
             scanf("%d",&item);
             create(item);
             break;
             case 2:
            begdelete();
            break;
            case 3:
            exit(0);
            break;
            default:
            printf("\nPlease enter valid choice\n");
        }
    }while(choice != 3);
}
void create(int item)
    {
        struct node *ptr = (struct node *)malloc(sizeof(struct node
        *)); if(ptr == NULL)
        {
            printf("\nOVERFLOW\n");
        }
        else
        {
            ptr->data = item;
            ptr->next       =
            head; head = ptr;
            printf("\nNode inserted\n");
        }
    }
void begdelete()
    {
        struct node *ptr;
    if(head == NULL)
    {
        printf("\nList is empty");
    }
    else
    {
        ptr = head;
        head = ptr->next;
        free(ptr);
        printf("\n Node deleted from the begining ...");
    }
}
OUTPUT:
                                             Program 14
                                    Traversing in Linked
#include<stdio.h>
                                    List
#include<stdlib.h>
void create(int);
void traverse();
struct node
{
     int data;
     struct node *next;
};
struct node *head;
void main ()
{
     int choice,item;
     do
     {
         printf("\n1.Append List\n2.Traverse\n3.Exit\n4.Enter your choice?");
         scanf("%d",&choice);
         switch(choice)
         {
             case 1:
             printf("\nEnter the item\n");
             scanf("%d",&item);
             create(item);
             break;
             case 2:
             traverse();
            break;
            case 3:
            exit(0);
            break;
            default:
            printf("\nPlease enter valid choice\n");
        }
    }while(choice != 3);
}
void create(int item)
    {
        struct node *ptr = (struct node *)malloc(sizeof(struct node
        *)); if(ptr == NULL)
        {
            printf("\nOVERFLOW\n");
        }
        else
        {
            ptr->data = item;
            ptr->next       =
            head; head = ptr;
            printf("\nNode inserted\n");
        }
    }
void traverse()
    {
    struct node *ptr;
    ptr = head;
    if(ptr == NULL)
    {
        printf("Empty list..");
    }
    else
    {
        printf("printing values.........\n");
        while (ptr!=NULL)
        {
            printf("\n%d",ptr->data);
            ptr = ptr -> next;
        }
    }
}
OUTPUT:
                                        Program 15
                                  Seraching In Linked List
#include<stdio.h>
#include<stdlib.h>
void create(int);
void search();
struct node
{
   int data;
   struct node *next;
};
struct node *head;
void main ()
{
   int choice,item,loc;
   do
   {
      printf("\n1.Create\n2.Search\n3.Exit\n4.Enter your choice?");
      scanf("%d",&choice);
      switch(choice)
      {
         case 1:
         printf("\nEnter the item\n");
         scanf("%d",&item);
         create(item);
         break;
         case 2:
         search();
         case 3:
         exit(0);
         break;
         default:
         printf("\nPlease enter valid choice\n");
      }
    }while(choice != 3);
}
    void create(int item)
    {
      struct node *ptr = (struct node *)malloc(sizeof(struct node
      *)); if(ptr == NULL)
      {
         printf("\nOVERFLOW\n");
    }
    else
    {
       ptr->data = item;
       ptr->next       =
       head; head = ptr;
       printf("\nNode inserted\n");
    }
  }
void search()
{
  struct node *ptr;
  int
  item,i=0,flag;
  ptr = head;
  if(ptr == NULL)
  {
     printf("\nEmpty List\n");
  }
  else
  {
     printf("\nEnter item which you want to search?\n");
     scanf("%d",&item);
     while (ptr!=NULL)
     {
        if(ptr->data == item)
        {
           printf("item found at location %d
           ",i+1); flag=0;
        }
        else
        {
           flag=1;
        }
        i++;
        ptr = ptr -> next;
     }
     if(flag==1)
     {
        printf("Item not found\n");
     }
  }
}
OUTPUT:
                                        Program 16
                                   Sorting in Linked List
// C program to sort link list
// using insertion sort
#include <stdio.h>
#include <stdlib.h>
struct node {
          int data;
          struct node* next;
};
struct node* head = NULL;
struct node* sorted = NULL;
void push(int val)
{
         /* allocate node */
         struct node* newnode
                   = (struct node*)malloc(sizeof(struct node));
         newnode->data = val;
         /* link the old list of the new node
         */ newnode->next = head;
         /* move the head to point to the new node */
         head = newnode;
}
/*
* function to insert a new_node in a list. Note that
* this function expects a pointer to head_ref as this
* can modify the head of the input linked list
* (similar to push())
*/
void sortedInsert(struct node* newnode)
{
          /* Special case for the head end */
          if (sorted == NULL || sorted->data >= newnode->data) {
                     newnode->next = sorted;
                     sorted = newnode;
          }
          else {
                     struct node* current = sorted;
                     /* Locate the node before the point of insertion
                     */
                     while (current->next != NULL
                              && current->next->data < newnode->data) {
                              current = current->next;
                     }
                     newnode->next = current->next;
                     current->next = newnode;
          }
}
// function to sort a singly linked list
// using insertion sort
void insertionsort()
{
          struct node* current = head;
          // Traverse the given linked list and insert every
          // node to sorted
          while (current != NULL) {
                     // Store next for next iteration
                     struct node* next = current->next;
                     // insert current in sorted linked
                     list sortedInsert(current);
                     // Update current
                     current = next;
          }
          // Update head to point to sorted linked
          list head = sorted;
}
/* Function to print linked list */
void printlist(struct node* head)
{
          while (head != NULL) {
                     printf("%d->", head->data);
                     head = head->next;
          }
          printf("NULL");
}
// Driver program to test above
functions int main()
{
      push(5);
      push(20);
      push(4);
      push(3);
      push(30);
      printf("Linked List before
      sorting:\n"); printlist(head);
      printf("\n");
      insertionsort(h
      ead);
      printf("Linked List after
      sorting:\n");
      printlist(head);
}
OUTPUT: