fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct lista {
  6. int info;
  7. lista* prox;
  8. };
  9.  
  10. void insere(lista* &ref, int valor) {
  11. lista* novoNo = new lista;
  12. if(!novoNo) {
  13. cout << "Sem memoria disponivel!" << endl;
  14. return;
  15. }
  16. novoNo->info = valor;
  17. novoNo->prox = ref;
  18. ref = novoNo;
  19. cout << "Nodo com valor " << novoNo->info << " inserido." << endl;
  20. }
  21.  
  22. void insere_fim(lista* &ref, int valor) {
  23. lista* novoNo = new lista;
  24. if(!novoNo) {
  25. cout << "Sem memoria disponivel!" << endl;
  26. return;
  27. }
  28. novoNo->info=valor;
  29. novoNo->prox = nullptr;
  30.  
  31. if(ref == nullptr) ref = novoNo;
  32. else {
  33. lista* p = ref;
  34.  
  35. while(p->prox != nullptr)
  36. p = p->prox;
  37.  
  38. p->prox = novoNo;
  39. }
  40. cout << "Nodo com valor " << novoNo->info << " inserido." << endl;
  41. }
  42.  
  43. lista* criaLista() {
  44. cout << "Lista criada." << endl;
  45. return nullptr;
  46. }
  47.  
  48. void imprime(lista *ref){
  49. while (ref != nullptr){
  50. cout << ref->info << " -> ";
  51. ref = ref->prox;
  52. }
  53. cout << " / " << endl;
  54. }
  55.  
  56. void menu(int* op, lista* ref) {
  57. int valor, aux=1;
  58. cout << "\033[2J\033[1;1H";
  59. cout << " --- Lista encadeada ---\n" << endl;
  60. while(true) {
  61. cout << "\n 1- Criar lista 5- Inserir no fim da lista\n 2- Inserir nodo 6- Liberar memoria\n 3- Imprimir lista 7- Encerrar programa\n 4- Remover nodo\n\nSelecione uma acao: ";
  62. cin >> *op;
  63. if((aux==1) && ((*op!=1) && (*op!=7))) {
  64. cout << "ERRO! Inicie o programa criando uma lista.\n";
  65. continue;
  66. }
  67. switch (*op) {
  68. case 1 :
  69. ref=criaLista();
  70. aux=0;
  71. break;
  72. case 2 : {
  73. cout << "Valor do nodo: ";
  74. cin >> valor;
  75. insere(ref, valor);
  76. break;
  77. }
  78. case 3 :
  79. imprime(ref);
  80. break;
  81. case 4 : {
  82. cout << "Valor do nodo: ";
  83. cin >> valor;
  84. /*ref=remove(ref, valor); */break;
  85. }
  86. case 5 : {
  87. cout << "Valor do nodo: ";
  88. cin >> valor;
  89. insere_fim(ref, valor);
  90. break;
  91. }
  92. case 6 : /*libera(&ref); */
  93. break;
  94. case 7 :
  95. break;
  96. default :
  97. cout << "Acao invalida! Tente novamente." << endl;
  98. }
  99. if (*op==7) {
  100. cout << "\n Fim do programa! :D ";
  101. break;
  102. }
  103. }
  104. }
  105.  
  106. int main () {
  107. int op;
  108. lista* ref;
  109. menu(&op, ref);
  110. }
  111.  
Success #stdin #stdout 0s 4540KB
stdin
1
5
10
5
20
5
30
2
40
3
7
stdout
                 --- Lista encadeada ---


     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: Lista criada.

     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: Valor do nodo: Nodo com valor 10 inserido.

     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: Valor do nodo: Nodo com valor 20 inserido.

     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: Valor do nodo: Nodo com valor 30 inserido.

     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: Valor do nodo: Nodo com valor 40 inserido.

     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: 40 -> 10 -> 20 -> 30 ->  / 

     1-    Criar lista          5-   Inserir no fim da lista
     2-    Inserir nodo         6-   Liberar memoria
     3-    Imprimir lista       7-   Encerrar programa
     4-    Remover nodo

Selecione uma acao: 
                   Fim do programa! :D