darkjessy94

Lista_Ordinata_Funzioni

Sep 1st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct SInfo
  5. {
  6. int value;
  7. };
  8. typedef struct SInfo TInfo;
  9.  
  10. struct SNode
  11. {
  12. TInfo info;
  13. struct SNode *next;
  14. };
  15. typedef struct SNode TNode;
  16. typedef TNode *TList;
  17.  
  18. TList Crea_Lista()
  19. {
  20. return NULL;
  21. }
  22. TList Leggi_Info()
  23. {
  24. TInfo info;
  25. printf("Inserisci numero: ");
  26. scanf("%d",info.value);
  27. }
  28. TList Inserisci_Elemento(TList lista,TInfo info)
  29. {
  30. TList prec,curr,new_node;
  31. prec=NULL;
  32. curr=lista;
  33. while(curr!=NULL && info.value > curr->info.value) ///trova la posizione di inserimento in modo da insere l'elemento in ordine
  34. {
  35. prec=curr;
  36. curr=curr->next;
  37. }
  38.  
  39. new_node=(TNode*)malloc(sizeof(TNode)); ///allocazione dinamica
  40. if(new_node==NULL){printf("Errore di allocazione");exit(1);}
  41. new_node->info=info;
  42.  
  43. if(prec==NULL)///inserimento in testa
  44. {
  45. new_node->next=lista;
  46. lista=new_node;
  47. return lista;
  48. }
  49. else ///inserimento in mezzo o fondo
  50. {
  51. prec->next=new_node;
  52. new_node->next=curr;
  53. return lista;
  54. }
  55. }
  56.  
  57. TList Cancella_Lista(TList lista)
  58. {
  59. TList curr,succ;
  60. curr=lista;
  61. while(curr!=NULL)
  62. {
  63. succ=curr->next;
  64. free(curr);
  65. curr=succ;
  66. }
  67. return NULL;
  68. }
  69.  
  70. TNode *Cerca(TList lista,int elem)
  71. {
  72. TNode *curr;
  73. curr=lista;
  74. while(curr!=NULL && elem > curr->info.value)
  75. curr=curr->next;
  76. if(elem == curr->info.value)
  77. return curr;
  78. else
  79. return NULL;
  80. }
  81.  
  82. TList Cancella_Elemento(TList lista,int elem)
  83. {
  84. TList prec,curr;
  85. prec=NULL;
  86. curr=lista;
  87. while(curr!=NULL && elem > curr->info.value)
  88. {
  89. prec=curr;
  90. curr=curr->next;
  91. }
  92. if(elem == curr->info.value)
  93. {
  94. if(prec==NULL)///eliminazione di testa
  95. {
  96. lista=curr->next;
  97. free(curr);
  98. }
  99. else
  100. {
  101. prec->next=curr->next;
  102. free(curr);
  103. }
  104. }
  105. return lista;
  106. }
  107. int main()
  108. {
  109. printf("Hello world!\n");
  110. return 0;
  111. }
Add Comment
Please, Sign In to add comment