Saturday, May 18, 2013

C Source Codes for Implementing Linked List

The linked list can be implemented using the pointer structure in C so that we can

  • add an element
  • delete an element
  • search for an element
  • concatenate two linked list
  • Invert a linked list
  • Display elements in the list


//Program to demonstrate linked list operations

# include<stdio.h>
# include<conio.h>
# include "malloc.h"
struct node
{
int data;
struct node *link;
};

void main()
{
int a=111,b=2,c=3,will,wish,num;
struct node *ptr,*ptr2,*result,*temp;
void add(struct node **,int );
struct node * search(struct node *);
void display(struct node *);
void invert(struct node *);
void del(struct node *,int);
struct node * concat(struct node *,struct node *);
ptr=NULL;
ptr2=NULL;
result=NULL;        //result for storing the result of concatenation
////();
will=1;
printf("Main Menu\n1. Add element\n2.Delete element\n3.Search element\n4Linked List concatenation\n5.Invert linked list\n6. Display elements\n7.To exit\n\nPlease enter the choice");
while(will==1)
{

scanf("%d",&wish);
switch(wish)
{
case 1:
    printf("Enter the element you want to add  : ");
    scanf("%d",&num);
    add(&ptr,num);
    display(ptr);
    break;
case 2:
    printf("Enter the element to delete :");
    scanf("%d",&num);
    del(ptr,num);
    break;
case 3:
    printf("Now demonstrating search \n\t");
    temp = search(ptr);
    printf("Address of first occurence is  %u \t",temp);
    break;
case 4:
    /* Inputs given internally for demo only */
    printf(" Now demonstrating linked list concatenation\tPress any key to continue...");
    add(&ptr2,2);
    add(&ptr2,4);
    add(&ptr2,6);
    getch();
    printf("Displaying second Linked List");
    display(ptr2);
    getch();
    result = concat(ptr,ptr2);
    //();
    printf("Now Displaying the result of concatenation");
    display(result);
    getch();
    break;
case 5:

    printf("Inverting the list ...Press any key to continue...\n\t");
    invert(ptr);
    break;
case 6:
    display(ptr);
    break;
case 7:
     exit(1);
     break;
default:
    printf("Illegal choice");
}
printf("DO you want to continue ?   ");
scanf("%d",&will);
}    //end of while
}


void add(struct node **q,int num)
{
struct node *temp;
temp = *q;
if(*q==NULL)
{
    *q=malloc(sizeof(struct node));
    temp = *q;
}
else
{
    while((temp->link)!=NULL)
    {
        temp=temp->link;
    }
    temp->link = malloc(sizeof(struct node));
    temp=temp->link;
}
temp->data = num;
temp->link  = NULL;
}

void display(struct node *pt)
{

while(pt!=NULL)
{

    printf("\tData : %d\t",pt->data);
    printf("Link : %d\t",pt->link);
    pt=pt->link;
}
}


void invert(struct node *ptr)
{

struct node  *p,*q,*r;
p=ptr;
q=NULL;

while(p!=NULL)
{
    r=q;
    q=p;
    p=p->link;
    q->link=r;
}
ptr = q;
display(ptr);
}


//    CONCATENATION OF LINKED LISTS

struct node * concat(struct node *p,struct node *q)
{
struct node *x,*r;


if (p==NULL)
r=q;

if (q==NULL)
r=p;
else
{
      x=p;
      r=x;
      while(x->link!=NULL)
     x=x->link;
      x->link=q;
}
    return(r);
}


// SEARCHING AN ELEMENT IN THE LINKED LIST
// THIS FUNCTION FINDS THE FIRST OCCURENCE OF
// A DATA AND RETURNS A POINTER TO ITS ADDRESS

struct node * search(struct node *p)
{
struct node *temp;
int num;
temp = p;
printf("Enter the data that you want to search    ");
scanf("%d",&num);
printf("Link of temp %u", temp->link);
while(temp->link!=NULL)
    {
    printf("\nIn while\n ");
    if(temp->data == num)
    return(temp);
    temp=temp->link;
    }
return(NULL);
}



// DELETING DATA FROM THE LINKED LIST//

void del(struct node *p,int num)
{

struct node *temp,*x;
temp=p;
x= NULL;

while (temp->link !=NULL)
{
if(temp->data == num)
{
    if (x==NULL)
    {
    p = temp->link;
    free(temp);
    return;
    }
    else
    {
    x->link = temp->link;
    free(temp);
    return;
    }
}                  //end of outer if
x=temp;
temp=temp->link;
}    //end of while
printf("\n No such entry to delete \n");
}    //end of fn.


2 comments :

  1. There are lots of people who place bets on numerous staking pursuits, and sports betting is really the most Private company Toto site activity of several gamblers. Right now, sports wagering is a lot superior in demand. In case you check out this internet site, you'll receive an increasing number of specifics about the totosite.

    ReplyDelete
  2. Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It’s always nice when you can not only be informed, but also entertained! hitechwork

    ReplyDelete

Related Posts Plugin for WordPress, Blogger...