I created this code by initializing a list, however I need to improve it, creating a function that concatenates two and at the end print the value of the two concatenated ones ... That, I do not know how to do it.
Suggested Prototype: no *concatena(no * inicio1, no * inicio2);
Parameters: Pointer to the beginning of the 1st. list (which can be NULL) and pointer to the beginning of the 2nd. list (which can be NULL).
Return: Pointer to the beginning of the resulting list of concatenation
//Lista encadeada Simples
//Imprimindo a lista
#include <iostream>
using namespace std;
struct No {
//Variavel Valor
int valor;
//Ponteiro para o próximo Nó
No * ptr;
};
No * inserirInicio(No * lista, int num);
void imprimir(No * lista);
main(){
//Declara e inicializa a LIsta
//O Ponteiro chamado de LISTA e é NULO/Vazio
No * lista = NULL;
//Recebera as alterações feitas com a função abaixo
lista = inserirInicio(lista, 10);
lista = inserirInicio(lista, 20);
lista = inserirInicio(lista, 30);
lista = inserirInicio(lista, 40);
lista = inserirInicio(lista, 50);
imprimir(lista);
}
No * inserirInicio(No * lista, int num)
{
//Variavel temporária
No * tmp;
//Se esta vazia Eu crio o elemento e aponto a lista para Ele
//Aponta para o nov nó
tmp = new No;
//Configurando o novo valor
//Guardo na variavel NUM
tmp -> valor = num;
//Apontar para o primeiro cara
tmp -> ptr = lista;
lista = tmp;
//Retorna o novo inicio da lista
return lista;
}
//Imprimindo os valores
void imprimir(No * lista)
{
No * atual;
atual = lista;//atual aponta para lista
while(atual!= NULL)
{
cout << atual -> valor << endl;
atual = atual -> ptr;
}
}