Monday, 22 February 2016

Linked list implementatkon in C and operations on linked lists

Here is a menu driven program which performs all the operations on linked list as per the input given according to the menu.

C program for implementation of linked list and displaying elements of a linked list is as shown below:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
 typedef struct node{
  int data;
     struct node* ptr;
 }node;
node *start=NULL, *temp, *p;
void create();
void display();
void insert_beg();
void insert_end();
void insert_sp();
void deletion();

void main(){
  int choice;
  clrscr();
  SP:
  printf("             **********MENU**********");
  printf("\n1. create a node");
  printf("\n2. Insert an element at the beginning of node");
  printf("\n3. Display the status of the list");
  printf("\n4. Insert at end of list");
  printf("\n5. Insert at a specific point in list");
  printf("\n6. Delete a node");
  printf("\n7. Exit");
  printf("\n\nEnter you choice:");
  scanf(" %d",&choice);

  switch(choice){
   case 1: create(); break;
   case 2: insert_beg(); break;
   case 3: display(); break;
   case 4: insert_end(); break;
   case 5: insert_sp(); break;
   case 6: deletion(); break;
   case 7: exit(0);
   default : printf("INVALID CHOICE! TRY AGAIN..\n\n");
  }
     goto SP;
 }

 void create(){
   int i,item,num ;
   printf("\nEnter the no. of nodes to be created:");
   scanf(" %d",&num);
   for(i=0;i<num;i++){
   printf("Enter the data:");
   scanf(" %d",&item);
   temp=(node *)malloc(sizeof(node));
   temp->data=item;
   temp->ptr=NULL;
   if(start==NULL)
    start=temp;
   else{
    p=start;
    while(p->ptr!=NULL)
     p=p->ptr;
    p->ptr=temp;
   }
  }
 }

void display(){
   temp=start;
   printf("\nThe current status of the list is:");
   while(temp!=NULL){
     printf(" %d\t",temp->data);
     temp=temp->ptr;
   }
  printf("\n\n");

}

void insert_beg(){
  int new_item;
  node *newb;
  newb=(node *)malloc(sizeof(node));
  printf("Enter data to be inserted:");
  scanf(" %d",&new_item);
  newb->data=new_item;
  newb->ptr=start;
  start=newb;
}

void insert_end(){
   node *newe ;
   int new_item;
   newe=(node *)malloc(sizeof(node));
   printf("\nEnter the element to be inserted:");
   scanf("%d",&new_item);
   newe->data=new_item;
   newe->ptr=NULL;
   temp=start;
   while(temp!=NULL)
   temp=temp->ptr;
   temp->ptr=newe;
}

void insert_sp(){
   node *newn;
   int item,k,i;
   printf("\nEnter the position where the node is to be inserted:");
   scanf(" %d",&k);
   newn=(node *)malloc(sizeof(node));
  printf("\nEnter data: ");
  scanf("%d",&item);
    newn->data=item;
    newn->ptr=NULL;
   temp=start;
     for(i=0;i<k-2;i++)
         temp=temp->ptr;
     newn->ptr=temp->ptr;
     temp->ptr=newn;
}

void deletion(){
   int k,i;
   printf("\nEnter the position of the node which is to be deleted:");
   scanf(" %d",&k);
   temp=start;
   for(i=1;i<k-1;i++)
   temp=temp->ptr;
      temp->ptr=temp->ptr->ptr;
}

No comments:

Post a Comment