Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <string.h>
  3. #define esquerda 0
  4. #define direita 1
  5.  
  6. using namespace std;
  7.  
  8. typedef struct t0{
  9. int vagao;
  10. t0 *next;
  11. t0 *previous;
  12. }t0;
  13.  
  14. typedef struct t1{
  15. int vagao;
  16. t1 *next;
  17. t1 *previous;
  18. }t1;
  19.  
  20. t0* t0pop(t0 *top){
  21. t0 *aux = top;
  22. top = top->previous;
  23. top->next = NULL;
  24. free(aux);
  25. return top;
  26. }
  27.  
  28. t0* t0push(t0 *top,t0 *t0novo,int numvagao){
  29. if(top == NULL){
  30. top = t0novo;
  31. top->next = NULL;
  32. top->previous = NULL;
  33. top->vagao = numvagao;
  34. return top;
  35. }
  36. else{
  37. top->next = t0novo;
  38. t0novo->next = NULL;
  39. t0novo->previous = top;
  40. t0novo->vagao = numvagao;
  41. }
  42. return t0novo;
  43. }
  44.  
  45. t1* t1pop(t1 *ponta,int lado){
  46. t1* aux = ponta;
  47. if(lado == direita){
  48. ponta = ponta->previous;
  49. ponta->next = NULL;
  50. }
  51. else if(lado == esquerda){
  52. ponta = ponta->next;
  53. ponta->previous = NULL;
  54. }
  55. free(aux);
  56. return ponta;
  57. }
  58.  
  59. t1* t1push(t1 *ponta,t1 *t1novo,int lado,int numvagao){
  60. if(lado == direita){
  61. if(ponta == NULL){
  62. ponta = t1novo;
  63. ponta->next = NULL;
  64. ponta->previous = NULL;
  65. ponta->vagao = numvagao;
  66. return ponta;
  67. }
  68. else{
  69. ponta->next = t1novo;
  70. t1novo->next = NULL;
  71. t1novo->previous = ponta;
  72. t1novo->vagao = numvagao;
  73. }
  74.  
  75. }
  76. else if(lado == esquerda){
  77. if(ponta == NULL){
  78. ponta = t1novo;
  79. ponta->next = NULL;
  80. ponta->previous = NULL;
  81. ponta->vagao = numvagao;
  82. return ponta;
  83. }
  84. else{
  85. ponta->previous = t1novo;
  86. t1novo->previous = NULL;
  87. t1novo->next = ponta;
  88. t1novo->vagao = numvagao;
  89. }
  90. }
  91. return t1novo;
  92. }
  93.  
  94. int main(){
  95. t0 *top = NULL;
  96. t1 *E = NULL;
  97. t1 *D = NULL;
  98. int numvagao = 0;
  99. int nt0 = 0;
  100. int nt1 = 0;
  101. char command[5];
  102. while(scanf("%s",command) != 0){
  103.  
  104. if(strcmp(command,"E0") == 0){
  105. t0 *t0novo =(t0*) malloc(sizeof(t0*));
  106. top = t0push(top,t0novo,numvagao);
  107. nt0++;
  108. numvagao++;
  109. }
  110. else if(strcmp(command,"S0") == 0 && top != NULL){
  111. printf("%d",top->vagao);
  112. top = t0pop(top);
  113. nt0--;
  114. }
  115. else if(strcmp(command,"E1E") == 0){
  116. t1 *t1novo =(t1*)malloc(sizeof(t1*));
  117. E = t1push(E,t1novo,numvagao,esquerda);
  118. nt1++;
  119. numvagao++;
  120. }
  121. else if(strcmp(command,"E1D") == 0){
  122. t1 *t1novo =(t1*)malloc(sizeof(t1*));
  123. D = t1push(D,t1novo,numvagao,esquerda);
  124. nt1++;
  125. numvagao++;
  126. }
  127. else if(strcmp(command,"S1E") == 0 && E != NULL){
  128. printf("%d",E->vagao);
  129. E = t1pop(E,esquerda);
  130. nt1--;
  131. }
  132. else if(strcmp(command,"S1D") == 0 && D != NULL){
  133. printf("%d",D->vagao);
  134. D = t1pop(D,direita);
  135. nt1--;
  136. }
  137. else if(strcmp(command,"FIM") == 0){
  138. printf("%d\n%d\n\n",nt0,nt1);
  139. //t0libera(top);
  140. //t1libera(D); DEPOIS VOU IMPLEMENTAR UM FREE PARA A LISTA
  141. numvagao = 0;
  142. nt0 = 0;
  143. nt1 = 0;
  144. top->next = NULL;
  145. E->next = NULL;
  146. D->next = NULL;
  147. top->previous = NULL;
  148. E->previous = NULL;
  149. D->previous = NULL;
  150. }
  151. }
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement