fork(1) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct info {
  6. char nome[50];
  7. };
  8.  
  9. typedef struct Elemento {
  10. struct info info;
  11. struct Elemento *prox;
  12. }Elemento;
  13.  
  14.  
  15. Elemento* remove_duplicados(Elemento* agenda)
  16. {
  17. Elemento* a;
  18. Elemento* p;
  19. Elemento* q;
  20.  
  21. for(p = agenda; p != NULL; p = p -> prox ){
  22. a = NULL;
  23.  
  24. for(q = p -> prox; q != NULL; ){
  25. if(0 == strcmp(p -> info.nome, q -> info.nome)){
  26. if(a == NULL){
  27. p -> prox = q -> prox;
  28. }
  29. else{
  30. a -> prox = q -> prox;
  31. }
  32.  
  33. Elemento* remover = q;
  34. q = q -> prox;
  35. free(remover);
  36. }
  37. else {
  38. a = q;
  39. q = q->prox;
  40. }
  41. }
  42. }
  43.  
  44. return agenda;
  45. }
  46.  
  47. void mostrar_lista(Elemento* agenda){
  48. Elemento *p;
  49. for(p = agenda; p != NULL; p = p -> prox){
  50. printf("%s -> ", p->info.nome);
  51. }
  52.  
  53. printf(" NULL");
  54. }
  55.  
  56. int main() {
  57. Elemento *agenda = malloc(sizeof(Elemento));
  58. strcpy(agenda->info.nome,"ana");
  59. Elemento *agenda2 = malloc(sizeof(Elemento));
  60. strcpy(agenda2->info.nome,"ana");
  61. Elemento *agenda3 = malloc(sizeof(Elemento));
  62. strcpy(agenda3->info.nome,"carla");
  63. Elemento *agenda4 = malloc(sizeof(Elemento));
  64. strcpy(agenda4->info.nome,"vitor");
  65. Elemento *agenda5 = malloc(sizeof(Elemento));
  66. strcpy(agenda5->info.nome,"vitor");
  67. Elemento *agenda6 = malloc(sizeof(Elemento));
  68. strcpy(agenda6->info.nome,"ana");
  69.  
  70. agenda->prox = agenda2;
  71. agenda2->prox = agenda3;
  72. agenda3->prox = agenda4;
  73. agenda4->prox = agenda5;
  74. agenda5->prox = agenda6;
  75. agenda6->prox = NULL;
  76.  
  77. mostrar_lista(agenda);
  78. agenda = remove_duplicados(agenda);
  79. printf("\n\nDuplicados removidos\n\n");
  80. mostrar_lista(agenda);
  81.  
  82. return 0;
  83. }
  84.  
  85.  
Success #stdin #stdout 0s 4444KB
stdin
Standard input is empty
stdout
ana -> ana -> carla -> vitor -> vitor -> ana ->  NULL

Duplicados removidos

ana -> carla -> vitor ->  NULL