Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* Estrutura do carro */
  5. typedef struct carro Carro;
  6. struct carro
  7. {
  8. char placa[8]; /* placa */
  9. char marca[20]; /* marca */
  10. char cor [10]; /* cor */
  11. int ano;
  12. };
  13.  
  14. /* Estrutura que representa o tipo pilha */
  15. typedef struct pilha Pilha;
  16. struct pilha
  17. {
  18. Carro c;
  19. int n; /* número de elementos armazenados */
  20. int dim; /* dimensão corrente do vetor */
  21. float* vet; /* vetor de elementos */
  22. };
  23.  
  24. /* Função que cria a pilha */
  25. Pilha* pilha_cria()
  26. {
  27. Pilha *p = (Pilha*) malloc(sizeof(Pilha)); /* Aloca memória */
  28. p->dim = 2; /* Dimensão inicial */
  29. p->vet = (float*) malloc(p->dim*sizeof(float)); /* Aloca memória para vetor */
  30. p->n = 0; /* Inicia com zero elementos */
  31. return p; /* Retorna ponteiro para pilha criada */
  32. }
  33.  
  34. /* Função que insere elemento na pilha */
  35. void pilha_push(Pilha* p)
  36. {
  37. if (p->n == p->dim) /* Capacidade esgotada */
  38. {
  39. p->dim *= 2; /* Dobra dimensão */
  40. /* Realoca espaço de memória*/
  41. p->vet = (Carro*) realloc(p->vet, p->dim * sizeof(Carro));
  42. }
  43. /* Insere elemento na próxima posição livre do vetor */
  44.  
  45. n++; /* Incrementa o nº de elementos após armazenar em p->vet */
  46. printf("Entre com a placa do carro: \n");
  47. scanf("%s", p->vet[p->n].placa);
  48. printf("Entre com a marca do carro: \n");
  49. scanf("%s", p->vet[p->n].marca);
  50. printf("Entre com a placa do carro: \n");
  51. scanf("%s", p->vet[p->n].cor);
  52. printf("Entre com a placa do carro: \n");
  53. scanf("%s", &p->vet[p->n].cor);
  54. }
  55.  
  56. /* Função que remove elemento do topo da pilha */
  57. float pilha_pop (Pilha* p)
  58. {
  59. if (p->n == 0) /* Pilha vazia */
  60. {
  61. printf(“Pilha vazia!\n”);
  62. return 0;
  63. }
  64. else
  65. {
  66. carro c;
  67. /* Retira elemento do topo */
  68. c = p->vet[--p->n]; /* Decrementa o número de elementos */
  69. return c; /* Retorna o elemento removido da pilha */
  70. }
  71. }
  72.  
  73. int pilha_vazia (Pilha* p)
  74. {
  75. return (p->n == 0);
  76. }
  77.  
  78.  
  79. void pilha_libera (Pilha* p)
  80. {
  81. free(p->vet); /* Libera memória alocada para o vetor */
  82. free(p); /* Libera memória alocada para a pilha */
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement