Advertisement
veto14

questao5.listaed1

May 21st, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct list{
  6. char nome[81];
  7. char mat[81];
  8. char turma;
  9. float p1,p2,p3;
  10. list* next;
  11. }Lista;
  12.  
  13. Lista* new_list(){
  14. return NULL;
  15. }
  16.  
  17. Lista* lst_insereord (Lista* lst, char* nome, char* matricula, char turma, float p1, float p2, float p3){
  18. Lista* new_l;
  19. Lista* ant = NULL;
  20. Lista* p = lst;
  21. while(p != NULL && ((p1+p2+p3)/3) > ((p->p1+p->p2+p->p3)/3)){
  22. ant = p;
  23. p = p->next;
  24. }
  25. new_l = (Lista*)malloc(sizeof(Lista));
  26. strcpy(new_l->nome,nome);
  27. strcpy(new_l->mat,matricula);
  28. new_l->p1 = p1;
  29. new_l->p2 = p2;
  30. new_l->p3 = p3;
  31. new_l->turma = turma;
  32. if(ant == NULL){
  33. new_l->next = lst;
  34. lst = new_l;
  35. }
  36. else{
  37. new_l->next = ant->next;
  38. ant->next = new_l;
  39. }
  40. return lst;
  41. }
  42.  
  43. Lista* lst_retira(Lista* lst, char* matricula){
  44. Lista* ant = NULL;
  45. Lista* p = lst;
  46. while(p!=NULL && strcmp(matricula,p->mat) != 0){
  47. ant = p;
  48. p = p->next;
  49. }
  50. if(p == NULL){
  51. return lst;
  52. }
  53. if(ant == NULL){
  54. lst = p->next;
  55. }
  56. else{
  57. ant->next = p->next;
  58. }
  59. free(p);
  60. return lst;
  61. }
  62.  
  63. void lst_print(Lista* lst){
  64. Lista* aux;
  65. for(aux = lst; aux!=NULL; aux = aux->next){
  66. printf("Conteudo %s\n", aux->mat);
  67. }
  68. }
  69.  
  70. int lst_void (Lista* lst){
  71. return (lst == NULL);
  72. }
  73.  
  74.  
  75. void lst_destroy(Lista* lst){
  76. Lista* aux = lst;
  77. while(aux != NULL){
  78. Lista* t = aux->next;
  79. free(aux);
  80. aux = t;
  81. }
  82. }
  83.  
  84. int main(void){
  85. Lista* list;
  86. list = new_list();
  87. char mat[81];
  88. for(int i=0; i<3; i++){
  89. fgets(mat,81,stdin);
  90. list = lst_insereord(list,"Gerso",mat,'1 ',3.0,4.0,5.0);
  91. }
  92. lst_print(list);
  93. fgets(mat,81,stdin);
  94. list = lst_retira(list,mat);
  95. lst_print(list);
  96. return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement