Saturday, 16 February 2013

Types of deletion in linked list:
1. From beginning
2. From end
3. From any given position
4. Leave 1st int locations and delete next int...
Here is the code for all four...
1. void del_beg(struct node **ps)
{
struct node *temp;
temp=*ps;
*ps=temp->next;
free(temp);
}

2. void del_end(struct node **ps)
{
struct node *temp,*temp1;
if((*ps)->next==NULL)
{
*ps=NULL;
return;
}
temp=*ps;
while(temp->next!=NULL)
{
temp1=temp;
temp=temp->next;
}
temp1->next=NULL;
free(temp);
}

3. void del_pos(struct node **ps,int pos)
{
struct node *temp,*temp1;
int i=1;
temp=*ps;
if(pos==1)
{
*ps=(*ps)->next;
free(temp);
return;
}
while(i<pos && temp)
{
temp1=temp;
temp=temp->next;
i++;
}
if(temp)
{
temp1->next=temp->next;
free(temp);
}
else
printf("Less no of nodes present than the position given.\n");
}

4.void del(struct node **ps,int n,int m)
{
struct node *temp=*ps,*temp1,*temp2;
int i;
while(temp)
{
for(i=1;i<=n;i++)
{
if(temp==NULL)
break;
temp1=temp;
temp=temp->next;
}
if(i==n+1)
{
for(i=1;i<=m;i++)
{
if(temp==NULL)
break;
temp1->next=temp->next;
temp2=temp;
temp=temp->next;
free(temp2);
}
}
}

}

No comments:

Post a Comment