fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class NO {
  6.  
  7. int idade;
  8. string nome;
  9. NO *no;
  10.  
  11. public:
  12.  
  13. void setDados(int, string);
  14. int getidade();
  15. string getnome();
  16. void setNext(NO*);
  17. NO* getNext();
  18. ~NO() {};
  19.  
  20. };
  21.  
  22. class Lista {
  23.  
  24. NO *inicio;
  25.  
  26. int quant_el;
  27.  
  28. public:
  29.  
  30. Lista() {
  31.  
  32. quant_el = 0;
  33. //inicio->setNext(NULL);
  34.  
  35. }
  36.  
  37. void inserir(int, string);
  38. void pesquisar(NO);
  39. void remover(int);
  40. void listar();
  41.  
  42. };
  43.  
  44.  
  45. void NO :: setDados(int idade, string nome) {
  46. this->idade = idade;
  47. this->nome = nome;
  48. }
  49.  
  50. int NO :: getidade() {
  51. return idade;
  52. }
  53.  
  54. string NO :: getnome() {
  55. return nome;
  56. }
  57.  
  58. void NO :: setNext(NO *no) {
  59. this->no = no;
  60. }
  61.  
  62. NO* NO :: getNext() {
  63. return no;
  64. }
  65.  
  66. void Lista :: inserir(int idade, string nome) {
  67. NO *aux;
  68. aux = inicio;
  69.  
  70. NO *novo = new NO();
  71.  
  72. novo->setDados(idade, nome);
  73. novo->setNext(NULL);
  74.  
  75. if(quant_el == 0) {
  76. inicio = novo;
  77. } else {
  78. while( (aux->getNext()) != NULL ) {
  79. aux = aux->getNext();
  80. }
  81. aux->setNext(novo);
  82. }
  83.  
  84. quant_el++;
  85. cout << "Foi inserido '" << idade << " " << nome << "'" << endl;
  86. }
  87.  
  88. void Lista :: pesquisar(NO obj) {
  89. NO *aux;
  90.  
  91. int i;
  92. int cont = 1;
  93. int cont1 = 0;
  94.  
  95. aux = inicio;
  96.  
  97. if(quant_el == 0) {
  98. cout << "Não há nenhum dado na sua Lista." << endl;
  99. } else {
  100. for(i = 0; i < quant_el; i++) {
  101. cont++;
  102. if(aux->getidade() == obj.getidade() && aux->getnome() == obj.getnome()) {
  103. cont1++;
  104. break;
  105. }
  106. aux = aux->getNext();
  107. }
  108. if(cont1 == 0) {
  109. cout << "O dado não foi encontrado." << endl;
  110. } else {
  111. cout << "Dado encontrado na posição " << cont - 1 << endl;
  112. }
  113. }
  114. }
  115.  
  116. void Lista :: remover(int pos) {
  117. int i;
  118.  
  119. NO *aux, *aux1;
  120. aux = inicio;
  121. aux1 = aux->getNext();
  122.  
  123. if(pos > quant_el) {
  124. if(quant_el == 0) {
  125. cout << "Sua lista está vazia, não há elementos para remover." << endl;
  126. } else {
  127. cout << "Posição inválida, sua lista possui menos elementos." << endl;
  128. }
  129. } else {
  130. for(i = 0; i < pos - 1; i++) {
  131. aux = aux1;
  132. aux1 = aux1->getNext();
  133. }
  134. aux->setNext(aux1->getNext());
  135.  
  136. quant_el --;
  137. cout << "Dado " << i + 1 << " removido: " << endl << aux1->getidade() << " " << aux1->getnome() << endl << endl;
  138. delete aux1;
  139. }
  140. }
  141.  
  142.  
  143. void Lista :: listar() {
  144.  
  145. int i;
  146.  
  147. NO *aux;
  148.  
  149. aux = inicio;
  150.  
  151. if(quant_el == 0) {
  152. cout << "Sua lista está vazia, não há elementos para mostrar." << endl;
  153. } else {
  154. for(i = 0; i < quant_el; i++) {
  155. cout << i << " Dado:" << endl;
  156. cout << aux->getnome() << endl << aux->getidade() << endl << endl;
  157.  
  158. aux = aux->getNext();
  159. }
  160. }
  161. }
  162.  
  163.  
  164. int main() {
  165. setlocale(LC_ALL, "");
  166.  
  167. Lista lista1;
  168.  
  169. NO loiola, rangel, humb;
  170.  
  171. loiola.setDados(18, "Loiola");
  172. rangel.setDados(29, "Eustáquio");
  173. humb.setDados(23, "Humberto");
  174.  
  175. lista1.inserir(18, "Filipe");
  176. lista1.inserir(29, "Eustáquio");
  177. lista1.inserir(10000, "Raul Seixas");
  178. lista1.inserir(18, "Leticia");
  179. lista1.inserir(18, "Mayra");
  180. //lista1.inserir(23, "Humberto"); Se um nó a mais for inserido, o programa crasha
  181.  
  182.  
  183. lista1.pesquisar(loiola);
  184. lista1.pesquisar(rangel);
  185. //lista1.pesquisar(loiola); Se um nó a mais for pesquisado, o programa crasha.
  186.  
  187. lista1.remover(2);
  188. lista1.remover(3);
  189. lista1.remover(1);
  190.  
  191. lista1.listar();
  192.  
  193. return 0;
  194. }
  195.  
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
Foi inserido '18 Filipe'
Foi inserido '29 Eustáquio'
Foi inserido '10000 Raul Seixas'
Foi inserido '18 Leticia'
Foi inserido '18 Mayra'
O dado não foi encontrado.
Dado encontrado na posição 2
Dado 2 removido: 
10000 Raul Seixas

Dado 3 removido: 
18 Mayra

Dado 1 removido: 
29 Eustáquio

0 Dado:
Filipe
18

1 Dado:
Leticia
18