fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 3
  5.  
  6. typedef struct alunos {
  7. int matricula;
  8. char nome[30];
  9. float nota1, nota2;
  10. } Alunos;
  11.  
  12. typedef struct lista {
  13. int quant;
  14. Alunos dados[MAX];
  15.  
  16. } Lista;
  17.  
  18. Lista* cria_Lista() {
  19. Lista* l = malloc(sizeof(Lista));
  20. if (l != NULL) {
  21. l->quant = 0;
  22. }
  23. return l;
  24. }
  25.  
  26. void libera_Lista(Lista* l) {
  27. free(l);
  28. }
  29.  
  30. int insere_final(Lista* l, Alunos al) {
  31. if (l == NULL) { // || lista_Cheia(l)) { --- tirei porque a função não existe
  32. return 0;
  33. }
  34. l->dados[l->quant] = al;
  35. l->quant++;
  36. return 1;
  37. }
  38.  
  39. int insere_inicio(Lista *l, Alunos al) {
  40. if (l == NULL) { // || lista_Cheia(l)) { --- tirei porque a função não existe
  41. return 0;
  42. }
  43. for (int i = l->quant - 1; i >= 0; i--) {
  44. printf("ok");
  45. l->dados[i + 1] = l->dados[i];
  46. l->dados[0] = al;
  47. l->quant++;
  48. }
  49. l->dados[0] = al;
  50. l->quant++;
  51. return 1;
  52. }
  53.  
  54. void imprime_lista(Lista* l) {
  55. if (l == NULL) {
  56. return;
  57. }
  58. for(int i = 0; i < l->quant; i++) {
  59. printf("Matricula: %d\n", l->dados[i].matricula);
  60. printf("Nome: %s\n", l->dados[i].nome);
  61. printf("Notas: %f %f\n", l->dados[i].nota1, l->dados[i].nota2);
  62. }
  63. }
  64.  
  65. int main() {
  66. Alunos al[2] = {{3, "João", 8.45, 9.98}, {1, "Maria", 6.75, 8.54}};
  67. Lista *l = cria_Lista();
  68. for (int i = 0; i < 2; i++) {
  69. insere_inicio(l, al[i]);
  70. imprime_lista(l);
  71. }
  72. libera_Lista(l);
  73. }
Success #stdin #stdout 0s 2300KB
stdin
Standard input is empty
stdout
Matricula: 3
Nome: João
Notas: 8.450000 9.980000
okMatricula: 1
Nome: Maria
Notas: 6.750000 8.540000
Matricula: 3
Nome: João
Notas: 8.450000 9.980000
Matricula: 0
Nome: 
Notas: 0.000000 0.000000