Advertisement
Guest User

Untitled

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