Popular Posts

Monday, 30 April 2012

Program to perform deletion from simple link list


#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<alloc.h>
void create();
void delbeg();
void delend();
void delkpos();
void delel();
void display();

struct node
{
int info;
struct node *link;
}*start=NULL;
void main()
{
char ans;
int ch;
clrscr();
do
{
printf("\nSelect any one");
printf("\n1. Create list");
printf("\n2. Deletion from beginning");
printf("\n3. Deletion from end");
printf("\n4. Deletion from 'Kth' position");
printf("\n5. Deletion of a particular element");
printf("\n6. Display list");
printf("\n7. Exit");
scanf("%d",&ch);
    switch(ch)
    {
        case 1: create();
            break;
        case 2: delbeg();
            break;
        case 3: delend();
            break;
        case 4: delkpos();
            break;
        case 5: delel();
            break;
        case 6:display();
            break;
        case 7: exit(-1);

    }
printf("\nDo you wish to continue?");
flushall();
scanf("%c",&ans);
}while(ans=='y' || ans=='Y');
getch();
}

void create()
{
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
printf("\nEnter info");
scanf("%d",&temp->info);
temp->link=NULL;
    if(start==NULL)
    {
    start=temp;
    }
    else
    {
    struct node *ptr=start;
        while(ptr->link!=NULL)
        {
        ptr=ptr->link;
        }
    ptr->link=temp;
    }
}

void delbeg()
{
struct node *ptr=start;
    if(start==NULL)
    {
    printf("\nEmpty list,can't delete");
    return;
    }

printf("\n%d element is being deleted",start->info);
start=start->link;
free(ptr);
}

void delend()
{
struct node *ptr=start;
    if(start==NULL)
    {
    printf("\nEmpty list,can't delete");
    return;
    }
    while(ptr->link->link!=NULL)
    ptr=ptr->link;
printf("\n%d element is being deleted",ptr->link->info);
free(ptr->link);
ptr->link=NULL;
}

void delkpos()
{
int k;
printf("\nEnter position");
scanf("%d",&k);
    if(start==NULL)
    {
    printf("\nEmpty list,can't delete");
    return;
    }
        else if(k==1)
        {
        struct node *ptr=start;
        printf("\n%d element is being deleted",start->info);
        start=start->link;
        free(ptr);
        }
            else
            {
            int i;
            struct node *ptr=start,*temp;
                for(i=1;i<=k-2;i++)
                {
                ptr=ptr->link;
                    if(ptr->link==NULL)
                    {
                    printf("\nList is short,can't delete");
                    return;
                    }
                }
            printf("\n%d element is being deleted",ptr->link->info);
            temp=ptr->link;
            ptr->link=ptr->link->link;
            free(temp);
            }
}

void delel()
{
int item;
struct node *ptr,*prev;
printf("\nEnter info to be deleted");
scanf("%d",&item);
ptr=start;
    while((ptr!=NULL)&&(ptr->info!=item))
    {
    prev=ptr;
    ptr=ptr->link;
    }
        if(ptr->info==item)
        {
        printf("\n%d element is being deleted",ptr->info);
        prev->link=ptr->link;
        free(ptr);
        }
        else
        {
        printf("\nElement not found");
        }
}

void display()
{
struct node *ptr=start;
while(ptr!=NULL)
{
printf("\n%d",ptr->info);
ptr=ptr->link;
}
}

No comments:

Post a Comment