void alteraLista(Lista *original, Lista *alterada) { destroyLista(alterada); Fila letras; iniciaFila(&letras); Pilha numeros; iniciaPilha(&numeros); // analisa os elementos da lista original struct elementoLista *aux = original->inicio; while(aux != NULL) { if(isalpha(aux->info)) enfileira(&letras, aux->info); else if(isdigit(aux->info)) empilha(&numeros, aux->info); else printf("Invalid character (%c).\n", aux->info); aux = aux->next; } //adiciona os valores a lista alterada while(emptyFila(&letras) != 1) pushBackLista(alterada, desenfileira(&letras)); while(sizePilha(&numeros) != 0) pushBackLista(alterada, desempilha(&numeros)); destroyFila(&letras); destroyPilha(&numeros); }
void imprimePilha(Pilha *pilha){ Pilha *aux; int aux2; aux=criaPilha(sizePilha(pilha)); // tamanho atual da pilha while (!emptyPilha(pilha)){ popPilha(pilha,&aux2); pushPilha(aux,aux2); } while (!emptyPilha(aux)){ popPilha(aux,&aux2); pushPilha(pilha,aux2); printf("%3d", aux2); } printf("\n"); }