fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. typedef struct friend
  7. {
  8. char *name;
  9. int age;
  10. char gender;
  11. struct friend* next;
  12. }friend;
  13.  
  14.  
  15. void node_delete(const char* name, friend* stFriend)
  16. {
  17. if (!stFriend->next) //end of list
  18. {
  19. printf("%s is not a friend!\n", name);
  20. }
  21. else if ( !strcmp(name, stFriend->next->name) ) //name matches! remove link
  22. {
  23. //here's where you can free your unwanted friend ptr ~NB: are you sure this friend is not a friend of someone else?
  24. //free(stFriend -> next);
  25. stFriend->next=stFriend->next->next;
  26. printf("%s is no longer a friend!\n", name);
  27. }
  28. else //name does not match -recurse
  29. {
  30. node_delete(name, stFriend->next);
  31. }
  32. }
  33.  
  34.  
  35. void print_friends(const friend* pstPerson)
  36. {
  37. if (pstPerson->next)
  38. {
  39. printf("next friend:%s\n", pstPerson->next->name);
  40. print_friends(pstPerson->next);
  41. }
  42. else
  43. {
  44. printf("no more friends :(\n\n");
  45. }
  46. }
  47.  
  48. int main()
  49. {
  50. friend stFriend0, stFriend1, stFriend2, stPerson;
  51. char name[256]={0};
  52.  
  53. stFriend0.name="amber";
  54. stFriend0.next=0;
  55.  
  56. stFriend1.name="betty";
  57. stFriend1.next=&stFriend0;
  58.  
  59. stFriend2.name="catherine";
  60. stFriend2.next=&stFriend1;
  61.  
  62. stPerson.name="violet";
  63. stPerson.next=&stFriend2;
  64.  
  65. printf("%s's friends before:\n", stPerson.name);
  66. print_friends(&stPerson);
  67.  
  68. printf("remove a friend: ");
  69. fgets (name, 256, stdin);
  70. strtok(name, "\n");
  71.  
  72. node_delete(name, &stPerson);
  73.  
  74. printf("\n\n%s's friends after:\n", stPerson.name);
  75. print_friends(&stPerson);
  76.  
  77. printf("\n\n\ndone!\n");
  78.  
  79. return 0;
  80. }
  81.  
Success #stdin #stdout 0s 4436KB
stdin
betty
stdout
violet's friends before:
next friend:catherine
next friend:betty
next friend:amber
no more friends :(

remove a friend: betty is no longer a friend!


violet's friends after:
next friend:catherine
next friend:amber
no more friends :(




done!