C program for delete a node from linked list

Questions by praveen.g

Showing Answers 1 - 7 of 7 Answers

Code
  1. struct node

  2. {

  3. int data;

  4. struct node * next;

  5. }list;

  6. for deleting a node from list first we have read a element which u want to delete and then we have identify previous node of that element.

  7. scanf("%d",&x);

  8. void deletenode(struct node * list)

  9. {struct node * l1=list,temp;

  10. if (l1->data==x)  l1=l1->next;       //deleting first element

  11. else

  12. {

  13. while (l1->next->data!=x) and (l1!=NULL) l1=l1->next;

  14. temp=l1->next;              //here l1 points to previous node

  15. l1->next=l1->next->next;

  16. delete (temp)

  17. }

  18. }

Please let me know if u r facing any problem with this

  Was this answer useful?  Yes

Yaa i am writing the full program here for better understanding:
This program will be run on Turbo C++ 3.0 without any error or warning.
<--------------------------------------------------------------------------------------------->


Code
  1. #include

  2. #include

  3. //Declaring node of linklist

  4. struct node

  5. {

  6. int data;

  7. struct node *link;

  8. };

  9. typedef struct node node;

  10.  

  11. //declaration of all function

  12. void deletenode(node **p, int num);

  13. void addatbeg(node **p, int num);

  14. void display(node **p);

  15.  

  16. void main()

  17. {

  18. node *p = NULL; //initialize the pointer to NULL(it does not point to any node)

  19.  

  20. addatbeg(&p,10);

  21. addatbeg(&p,129);

  22. addatbeg(&p,67);

  23. addatbeg(&p,23);

  24.  

  25. printf("nLinklist : n");

  26. display(&p);

  27. deletenode(&p,67);

  28.  

  29. printf("nAfter deleting node: n");

  30. display(&p);

  31. }

  32.  

  33.  

  34. //this is the function by which we can delete a node from a linklist

  35.  

  36. void deletenode(node **head, int num)

  37. {

  38.  

  39. // Here temp points to the current node and old points to the previous node

  40. //num-->element to be deleted

  41.  

  42. node *temp, *old;

  43. temp = *head;

  44. int flag = 0;

  45.  

  46. while(temp != NULL)

  47. {

  48. if(temp->data == num) //if element found

  49. {

  50. flag = 1;

  51. if(temp == *head)

  52. {

  53. *head = (*head)->link;

  54. free(temp);

  55. }

  56. else

  57. {

  58. old->link = temp->link;

  59. free(temp);

  60. }

  61. }

  62. else //if element not found, go to the next node

  63. {

  64. old = temp;

  65. temp = temp->link;

  66. }

  67. }

  68. if(flag == 0)

  69. printf("Element not found");

  70. }

  71. void addatbeg(node **head, int num)

  72. {

  73. node *temp;

  74. if(*head == NULL)

  75. {

  76. temp = (node *)malloc(sizeof(node));

  77. temp->data = num;

  78. temp->link = NULL;

  79. *head = temp;

  80. }

  81. else

  82. {

  83. temp = (node *)malloc(sizeof(node));

  84. temp->data = num;

  85. temp->link = *head;

  86. *head = temp;

  87.  

  88. }

  89. }

  90.  

  91. void display(node **head)

  92. {

  93. node *temp = *head;

  94. while(temp != NULL)

  95. {

  96. printf("t %d",temp->data);

  97. temp = temp->link; }

  98. }

  99. }



<----------------------------------------------------------------------------------------->

oly

  • Sep 14th, 2014
 

What is the program for delete a list in an linked list?

  Was this answer useful?  Yes

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

 

Related Answered Questions

 

Related Open Questions