Dev - C++ - Invertir lista

 
Vista:

Invertir lista

Publicado por Nock (5 intervenciones) el 07/09/2006 11:26:25
Buenas a todos
Tengo una duda y es:
¿Como puedo hacer un metodo que sea tipo reves( ):lista que de la vuelta a una lista de m anera recursiva.
Lo se hacer de manera no recursiva, pero de manera recursiva no me sale.
Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Invertir lista

Publicado por Chandasi (1 intervención) el 08/09/2006 02:03:11
Lo mejor es usar std::list, ahora, si la pregunta es puro interés intelectual, la clase "Lista" se invierte recursivamente.

#include <string>
#include <stdlib>
#include <iostream>

//---------------------------------------------------------------------------
class Lista
{
struct nodo
{
nodo(): next(0) {}
int contenido;
nodo * next;
};
nodo * cabeza;
nodo * cola;

public:
Lista(): cabeza(0), cola(0) {}
~Lista()
{
nodo * tmp = cabeza;
while (tmp!=0)
{
cabeza = tmp->next;
delete tmp;
tmp = cabeza;
}
}
void insert(int i)
{
if (cabeza==0)
{
cabeza = new nodo();
cabeza->contenido = i;
cola = cabeza;
}
else
{
nodo * temp = new nodo();
temp->contenido = i;
cola->next = temp;
cola=temp;
}
}
std::string listado()
{
std::string result;
nodo * temp = cabeza;
while (temp!= 0)
{
char buffer[50];
result += itoa(temp->contenido, buffer, 10) + std::string(" ");
temp = temp->next;
}
return result;
}
void reversa()
{
nodo * tempcola = cola;
doreversa(cabeza);
cabeza = tempcola;
}
doreversa(nodo * header)
{
nodo * temp = header->next;
if (temp!=0)
{
{
doreversa(temp);
cola->next = header;
cola = header;
cola->next = 0;
}
}
}
};
//---------------------------------------------------------------------------

int main(int argc, char* argv[])
{
Lista lista;
lista.insert(1);
lista.insert(2);
lista.insert(3);
lista.insert(4);
std::string s1 = lista.listado();
lista.reversa();
std::string s2 = lista.listado();
std::cout << s1 << "_____" << s2;
return 0;
}
//---------------------------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Invertir lista

Publicado por Nock (5 intervenciones) el 08/09/2006 11:49:53
Gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar