Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 51
  4.  
  5. typedef struct node *link;
  6. typedef struct {
  7. char codice[6];
  8. char nome[MAX];
  9. char cognome[MAX];
  10. char data[11];
  11. char via[MAX];
  12. char citta[MAX];
  13. int cap;
  14. link head;
  15. } anagraf_t;
  16. typedef struct node{
  17. anagraf_t val;
  18. link next;
  19. };
  20.  
  21. link InsOrdinato(link h, anagraf_t val);
  22. char KEYget(anagraf_t val);
  23. int KEYgreater(char val, char data);
  24.  
  25. int main()
  26. {
  27. anagraf_t *persona;
  28. FILE*fp=fopen("elenco.txt", "r");
  29. link x, p, head;
  30. int i=0;
  31.  
  32. x=malloc(sizeof(struct node));
  33. persona=(anagraf_t*)malloc(sizeof(anagraf_t));
  34. if(head==NULL) printf("Lista vuota\n");
  35. p=NULL;
  36.  
  37. while(fscanf(fp, "%s%s%s%s%s%s%d", persona->codice,persona[i].nome,
  38. persona[i].cognome, persona[i].data, persona[i].via, persona[i].citta, &persona[i].cap)!=EOF){
  39. persona[i].head=InsOrdinato(head, *persona);
  40. }
  41. Stampa(x);
  42.  
  43.  
  44. return 0;
  45. }
  46.  
  47. link newNode(anagraf_t val, link next)
  48. {
  49. link x=malloc(sizeof*x);
  50. if(x==NULL) return NULL;
  51. x->val=val;
  52. x->next=next;
  53. return x;
  54. }
  55.  
  56. link InsOrdinato(link h, anagraf_t val)
  57. {
  58. link x, p;
  59. char k[MAX];
  60. *k=KEYget(val);
  61. if(h==NULL||KEYgreater(KEYget(h->val),k))
  62. return newNode(val, h);
  63. for(x=h->next, p=h; x!=NULL&&KEYgreater(k, KEYget(x->val)); p=x, x=x->next);
  64. p->next=newNode(val, x);
  65. return h;
  66. }
  67.  
  68. char KEYget(anagraf_t val)
  69. {
  70. return val.nome;
  71. }
  72.  
  73. int KEYgreater(char val, char data)
  74. {
  75. if(strcmp(val, data)>0){
  76. return strcmp(val, data);
  77. }
  78. return -1;
  79. }
  80.  
  81. /*link CancOrdinata(link h, char k)
  82. {
  83. link x,p;
  84. if(h==NULL) return NULL;
  85. for(x=h, p=NULL; x!=NULL&&KEYgeq(k, KEYget(x->val)); p=x, x=x->next){
  86. if(KEYeq(KEYget(x->val),k)){
  87. if(x=h) h=x->next;
  88. else p->next=x->next;
  89. free(x);
  90. break;
  91. }
  92. }
  93. return h;
  94. }
  95.  
  96. link RicOrdinata(link h, char k)
  97. {
  98. link x;
  99. for(x=h; x!=NULL&&KEYgeq(k, KEYget(x->val)); x=x->next){
  100. printf("\n");
  101. if(KEYeq(KEYget(x->val),k)) return h; //MODIFICARE
  102. }
  103. return h; //MODIFICARE
  104. }*/
  105.  
  106. void Stampa(link x)
  107. {
  108. if(x==NULL)
  109. return;
  110.  
  111. printf("%s ", x->val);
  112. Stampa(x->next);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement