VMWare Inc Interview Question
Software Engineer / Developers/* Delete node in linked list */
void Delete(struct node **begin)
{
struct node *temp,*previous;
int node_number,count;
count = 1;
printf("\n Enter Node Number to be deleted : ");
scanf("%d",&node_number);
if(node_number <= 0)
{
printf("\n\n Node does not exist!! List begins with 1.");
return;
}
temp = *begin;
while(temp != NULL)
{
if(count == node_number)
{
if(temp == *begin) /*if want to delete First Node*/
{
*begin = temp->next;
free(temp);
return;
}
else if(temp->next == NULL) /*if want to delete Last Node*/
{
previous->next = NULL;
free(temp);
return;
}
else
{
previous->next = temp->next;
free(temp);
return;
}
}
else
{
previous = temp;
temp = temp->next;
count ++;
}
}
printf("\n\n Link List has only %d nodes",count-1);
}
More simple
Node delete(Node head, int value)
{
if(head == null)
return;
if(head->value == value){
return head->next;
}
Node next = head->next;
while(next){
if(next->value == value){
next->next = next->next->next;
break;
}
}
return head;
}
- Anonymous November 29, 2010