Lo que pasa es que tengo que ordenar unos nodos en ascendente y descendente.
Con burbuja esta fácil pero no se como hacerle con nodos, quisiera ver si alguien me ayuda y se los agradezco de todos modos si no pueden, solo faltarían las funciones de ordenamiento, el termino CAJA se refiere al NODO:
Código:
#include <cstdlib>
#include <iostream>
using namespace std;
struct caja{
int a;
struct caja *post;
};
typedef caja *CAJA;
void iniciar(CAJA &N)
{
N=NULL;
}
int vacia(CAJA N)
{
if (N==NULL)
return 1;
return 0;
}
void insertar(int x, CAJA &N)
{
CAJA M;
if (vacia(N))
{
N=new caja;
N->a=x;
N->post=NULL;
}
else
{
M=new caja;
M->a=x;
M->post=N;
N=M;
}
}
void eliminar(CAJA &N)
{
CAJA M;
if (vacia(N))
cout<<"La lista se encuentra vacia"<<endl;
else {
M=N;
N=N->post;
delete M;
}
}
void mostrar(CAJA N)
{
CAJA M;
if (vacia(N))
cout<<"La lista se encuentra vacia"<<endl;
else {
M=N;
while (M!=NULL)
{
cout<<M->a<<" - > ";
M=M->post;
}
cout<<" NULL "<<endl;
}
}
void ASC(CAJA *N)
{
//Como le hago?
}
void DESC(CAJA *N)
{
//Como le hago?
}
int main(int argc, char *argv[])
{
CAJA N;
int elec,x;
iniciar(N);
do {
system("CLS");
cout<<" MENU "<<endl;
cout<<" 1. Insertar Nodo "<<endl;
cout<<" 2. Eliminar Nodo "<<endl;
cout<<" 3. Ordenar Ascendente "<<endl;
cout<<" 4. Ordenar Descendente "<<endl;
cout<<" 5. Mostrar Lista"<<endl;
cout<<" 6. Salir "<<endl;
cout<<" Elige una opcion: ";
cin>>elec;
switch(elec)
{
case 1: cout<<"Dato: " ;
cin>>x;
insertar(x,N);
break;
case 2: eliminar(N);
break;
case 3: ASC(N);
break;
case 4: DESC(N);
break;
case 5: mostrar(N);
break;
case 6: cout<<"Fin del Programa "<<endl;
break;
default: cout<<"Opcion no valida. "<<endl;
}
system("PAUSE");
}while (elec!=6);
return EXIT_SUCCESS;
}