Hola necesito ayuda..
Como hago que los datos de una lista doble se pase el numero que se repita a la de la lista soy un novato y los punteros me cuesta un buen de trabajo.Es lo unico que necesito para terminar .
El codigo guarda los numeros por ejemplo {6,7,2,7,-1,9,7,3} y cuando el numero de repita tiene que salir NULL <-> 6<-> 7->7->7 <->2<->-1<->9<->3 <-> NULL los <-> son de la doble ligada y el -> es de la lista donde esta el numero que se repite . El codigo mete numeros hasta que metas 0 en la opcion 1 y la opcion 2 muestra la lista y en la opcion 3 es el metodo de la burbuja.
Como hago que los datos de una lista doble se pase el numero que se repita a la de la lista soy un novato y los punteros me cuesta un buen de trabajo.Es lo unico que necesito para terminar .
El codigo guarda los numeros por ejemplo {6,7,2,7,-1,9,7,3} y cuando el numero de repita tiene que salir NULL <-> 6<-> 7->7->7 <->2<->-1<->9<->3 <-> NULL los <-> son de la doble ligada y el -> es de la lista donde esta el numero que se repite . El codigo mete numeros hasta que metas 0 en la opcion 1 y la opcion 2 muestra la lista y en la opcion 3 es el metodo de la burbuja.
Código [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo
{
int dato;
struct nodo *siguiente;
struct nodo *anterior;
}nodo;
nodo *primero = NULL;
nodo *ultimo = NULL;
void insertarNum();
void MostrarNum();
void MostrarNum2();
void OrdenarNum();
int main()
{
int opcionSeleccionada;
while(opcionSeleccionada !=5)
{
printf("\n Lista doblemente ligada");
printf("\n 1.- Insertar |4.- Salir");
printf("\n 2.- Mostrar lista");
printf("\n 3.- Ordenar");
printf("\n \n");
scanf("%d", &opcionSeleccionada);
switch(opcionSeleccionada)
{
case 1:
system("clear");
printf("\n\n Insertar Numero. \n\n");
insertarNum();
break;
case 2:
system("clear");
printf("\n\n Mostrar lista de Numero. \n\n");
MostrarNum();
break;
case 3:
system("clear");
printf("\n\n Ordenar Numero.\n\n");
OrdenarNum();
break;
case 4:
printf("\n\n Salir \n\n");
break;
default:
printf("\n\n Opcion invalida. \n\n");
}
}
return 0;
}
void insertarNum()
{
int i=0,a=1;
for(i=0;i<a;i++)
{
nodo *nuevo = (nodo*) malloc(sizeof(nodo));
printf("Ingrese el dato del nodo:");
scanf("%d", &nuevo->dato);
if(nuevo->dato== 0)
{
break;
}
if(primero == NULL)
{
primero = nuevo;
primero->siguiente = NULL;
primero->anterior = NULL;
ultimo = primero;
}
else
{
ultimo->siguiente = nuevo;
nuevo->siguiente = NULL;
nuevo->anterior = ultimo;
ultimo = nuevo;
}
a++;
}
}
void MostrarNum()
{
nodo *nodoActual = (nodo*) malloc(sizeof(nodo));
nodoActual = primero;
if(primero!=NULL)
{
printf("Impresion normal: NULL ");
while(nodoActual!=NULL)
{
printf("<-> %d ", nodoActual->dato);
nodoActual = nodoActual->siguiente;
}
printf("<-> NULL \n");
}
else
{
printf("\nLista vacia.\n");
}
}
void OrdenarNum()
{
nodo *nodoActual = (nodo*) malloc(sizeof(nodo));
nodo *nodoSig = (nodo*) malloc(sizeof(nodo));
int aux = 0;
nodoActual = primero;
nodoSig = nodoActual->siguiente;
if(primero != NULL)
{
while(nodoSig != NULL)
{
if(nodoActual->dato > nodoSig->dato)
{
printf("nodoActual -> %d\n",nodoActual->dato);
printf("nodoSig -> %d\n",nodoSig->dato);
aux = nodoActual->dato;
nodoActual->dato = nodoSig->dato;
nodoSig->dato = aux;
printf("Aux-> %d\n",aux);
}
nodoActual = nodoActual->siguiente;
nodoSig = nodoSig->siguiente;
}
nodoActual = nodoActual->siguiente;
MostrarNum2();
}
else
{
printf("\nLista vacia.\n");
}
}
void MostrarNum2()
{
nodo *nodoActual = (nodo*) malloc(sizeof(nodo));
nodoActual = primero;
if(primero!=NULL)
{
printf("\n Impresion Burbuja:\n NULL ");
while(nodoActual!=NULL)
{
printf("<-> %d ", nodoActual->dato);
nodoActual = nodoActual->siguiente;
}
printf("<-> NULL \n");
}
else
{
printf("\nLista vacia.\n");
}
}