#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//definimos una lista de lista ... de cada nodo de la lista principal se desprende otra lista
typedef struct SubNodo {
struct SubNodo *proximo;
char nombre[20];
int dato;
} SubNodo;
typedef struct miNodo {
struct SubNodo *sig;
struct miNodo *proximo;
char nombre[20];
int dato;
} Nodo;
int FALSE=0,TRUE=1;
int CrearNodo( SubNodo* actual,int valor, char *nombre);
int insertar3(Nodo* actual, int valor, char *nombre);
void crearlista(SubNodo*);
void crearlista(Nodo*);
void ver(SubNodo *);
void ver(Nodo *);
void llenar(Nodo *);
int main(void)
{
SubNodo *nuevo;
Nodo *Raiz;
//SubNodo *Rai;
int salir =1,n;
Nodo *nod;
Raiz= (Nodo *) malloc(sizeof(Nodo));
Raiz->proximo=NULL;
nuevo=(SubNodo*)malloc(sizeof(SubNodo));
nuevo->proximo=NULL;
nuevo->nombre[0]='\0';
strcat(nuevo->nombre,"aa");
nuevo->dato=0;
crearlista(nuevo);
Raiz->sig=nuevo;
Raiz->nombre[0]='\0';
strcat(Raiz->nombre,"Raiz");
Raiz->dato=0;
crearlista(Raiz);
while(salir)
{
system("cls");
printf("Seleccione la Accion\n\n");
printf("\t1.- Ver Nodos\n");
printf("\t2.- ver\n");
printf("\t3.- Buscar Nodo\n");
printf("\t4.- Salir\n");
printf("\t\tOpcion: ");
scanf("%i",&n);
switch(n)
{
case 1:
ver(Raiz);
ver(nuevo);
break;
case 2:
break;
case 3:
break;
default:
salir=0;
}
system("pause");
}
return 0;
}
void crearlista(Nodo* actual)
{
int i;
char c[7][10]={"juan","pedro","marcos","maria","gonzalo","julio","anibal"}; // vector de caracteres osea es una matriz de 2 dimensiones
char nombre[20];
for(i=0; i<7; i++)
{
sprintf(nombre,"%s",c[i]);
insertar3(actual,i,nombre);
}
}
void ver(Nodo *actual)
{
system("cls");
while (actual != NULL)
{
printf("\n\nDia: %s\n",actual->nombre);
//printf("El dato: %i\n",actual->dato);
actual = actual->proximo;
}
}
int insertar3(Nodo* actual, int valor, char *name)
{
Nodo *nuevo, *anterior;
while (actual != NULL)
{
anterior = actual;
actual = actual->proximo;
}
nuevo = (Nodo *) malloc(sizeof(Nodo));
if (nuevo == NULL)
return FALSE;
nuevo->dato = valor;
nuevo->nombre[0]='\0';
strcat(nuevo->nombre,name);
nuevo->proximo = actual;
anterior->proximo = nuevo;
return TRUE;
}
//---------------------------------------------------
//---------------------------------------------------
//SUPUESTAS FUNCIONES PARA LA SUPESTA SUB LISTA
//---------------------------------------------------
//---------------------------------------------------
void crearlista(SubNodo* actual1)
{
int i;
char c[7][30]={"Nose porque se remplaza","julio",abril","junio","noviembre","febrero","enero"}; // vector de caracteres osea es una matriz de 2 dimensiones
char nombre[20];
for(i=0; i<7; i++)
{
sprintf(nombre,"%s",c[i]);
CrearNodo(actual1,i,nombre);
}
}
void ver(SubNodo *actual1)
{
system("cls");
while (actual1 != NULL)
{
printf("\n\nDia: %s\n",actual1->nombre);
//printf("El dato: %i\n",actual->dato);
actual1 = actual1->proximo;
}
}
//aca estoy perdida..esto realmente creo que esta mal
int CrearNodo( SubNodo* sig,int valor, char *name)
{
SubNodo* nueo;
SubNodo* actual1;//puntero que se utiliza para recorrer la lista
SubNodo* anterior;
actual1=sig;
//recorremos la lista, hasta llegar a NULL
while(actual1 != NULL)
{
anterior=actual1;
actual1=actual1->proximo;//apuntamos al siguiente nodo
}
//cuando hemos llegado al NULL, se añade el nuevo nodo
nueo=(SubNodo*)malloc(sizeof(SubNodo));
//si es que no hay memoria, retornamos
if (nueo==NULL)
{
return FALSE;
}
nueo->dato = valor;
nueo->nombre[0]='\0';
strcat(nueo->nombre,name);
nueo->proximo = actual1;
anterior->proximo = nueo;
return TRUE;
}