Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <queue>
- #include <stack>
- #include <stdlib.h>
- #include <ctype.h>
- using namespace std;
- struct No
- {
- char c;
- No * proximo;
- };
- //chars eh o no cabeca da lista
- No * letras_primeiro(No * chars)
- {
- No * retorno_cabeca = (No*) operator new (sizeof(No));
- No * retorno_atual = retorno_cabeca;
- //cabeca nao tem dados relevantes
- No * atual = chars->proximo;
- stack<char> pilha;
- queue<char> fila;
- while (atual != NULL)
- {
- char c = atual->c;
- if (isdigit(c))
- pilha.push(c);
- else
- fila.push(c);
- atual = atual->proximo;
- }
- while (!fila.empty())
- {
- char c = fila.front();
- No * novo = new No;
- novo->proximo = NULL;
- novo->c = c;
- retorno_atual->proximo = novo;
- retorno_atual = novo;
- fila.pop();
- }
- while (!pilha.empty())
- {
- char c = pilha.top();
- No * novo = new No;
- novo->proximo = NULL;
- novo->c = c;
- retorno_atual->proximo = novo;
- retorno_atual = novo;
- pilha.pop();
- }
- return retorno_cabeca;
- }
- int main(int argc, char const *argv[])
- {
- No * cabeca = (No*) operator new (sizeof(No));
- No * atual = cabeca;
- char c;
- while (cin >> c)
- {
- if (isalnum(c))
- {
- No * novo = new No;
- novo->c = c;
- atual->proximo = novo;
- atual = novo;
- }
- }
- atual = letras_primeiro(cabeca)->proximo; //a funcao retorna a cabeca da lista
- while (atual != NULL)
- {
- cout << atual->c << " ";
- atual = atual->proximo;
- }
- cout << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment