Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <string.h>
- #define esquerda 0
- #define direita 1
- using namespace std;
- typedef struct t0{
- int vagao;
- t0 *next;
- t0 *previous;
- }t0;
- typedef struct t1{
- int vagao;
- t1 *next;
- t1 *previous;
- }t1;
- t0* t0pop(t0 *top){
- t0 *aux = top;
- top = top->previous;
- top->next = NULL;
- free(aux);
- return top;
- }
- t0* t0push(t0 *top,t0 *t0novo,int numvagao){
- if(top == NULL){
- top = t0novo;
- top->next = NULL;
- top->previous = NULL;
- top->vagao = numvagao;
- return top;
- }
- else{
- top->next = t0novo;
- t0novo->next = NULL;
- t0novo->previous = top;
- t0novo->vagao = numvagao;
- }
- return t0novo;
- }
- t1* t1pop(t1 *ponta,int lado){
- t1* aux = ponta;
- if(lado == direita){
- ponta = ponta->previous;
- ponta->next = NULL;
- }
- else if(lado == esquerda){
- ponta = ponta->next;
- ponta->previous = NULL;
- }
- free(aux);
- return ponta;
- }
- t1* t1push(t1 *ponta,t1 *t1novo,int lado,int numvagao){
- if(lado == direita){
- if(ponta == NULL){
- ponta = t1novo;
- ponta->next = NULL;
- ponta->previous = NULL;
- ponta->vagao = numvagao;
- return ponta;
- }
- else{
- ponta->next = t1novo;
- t1novo->next = NULL;
- t1novo->previous = ponta;
- t1novo->vagao = numvagao;
- }
- }
- else if(lado == esquerda){
- if(ponta == NULL){
- ponta = t1novo;
- ponta->next = NULL;
- ponta->previous = NULL;
- ponta->vagao = numvagao;
- return ponta;
- }
- else{
- ponta->previous = t1novo;
- t1novo->previous = NULL;
- t1novo->next = ponta;
- t1novo->vagao = numvagao;
- }
- }
- return t1novo;
- }
- int main(){
- t0 *top = NULL;
- t1 *E = NULL;
- t1 *D = NULL;
- int numvagao = 0;
- int nt0 = 0;
- int nt1 = 0;
- char command[5];
- while(scanf("%s",command) != 0){
- if(strcmp(command,"E0") == 0){
- t0 *t0novo =(t0*) malloc(sizeof(t0*));
- top = t0push(top,t0novo,numvagao);
- nt0++;
- numvagao++;
- }
- else if(strcmp(command,"S0") == 0 && top != NULL){
- printf("%d",top->vagao);
- top = t0pop(top);
- nt0--;
- }
- else if(strcmp(command,"E1E") == 0){
- t1 *t1novo =(t1*)malloc(sizeof(t1*));
- E = t1push(E,t1novo,numvagao,esquerda);
- nt1++;
- numvagao++;
- }
- else if(strcmp(command,"E1D") == 0){
- t1 *t1novo =(t1*)malloc(sizeof(t1*));
- D = t1push(D,t1novo,numvagao,esquerda);
- nt1++;
- numvagao++;
- }
- else if(strcmp(command,"S1E") == 0 && E != NULL){
- printf("%d",E->vagao);
- E = t1pop(E,esquerda);
- nt1--;
- }
- else if(strcmp(command,"S1D") == 0 && D != NULL){
- printf("%d",D->vagao);
- D = t1pop(D,direita);
- nt1--;
- }
- else if(strcmp(command,"FIM") == 0){
- printf("%d\n%d\n\n",nt0,nt1);
- //t0libera(top);
- //t1libera(D); DEPOIS VOU IMPLEMENTAR UM FREE PARA A LISTA
- numvagao = 0;
- nt0 = 0;
- nt1 = 0;
- top->next = NULL;
- E->next = NULL;
- D->next = NULL;
- top->previous = NULL;
- E->previous = NULL;
- D->previous = NULL;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement