Listas Dinamicas[AYUDA]

Iniciado por andressitto007, 10 Abril 2011, 21:43 PM

0 Miembros y 2 Visitantes están viendo este tema.

andressitto007

Estoy recién partiendo en esto de programar en C, tengo una duda que ojalá ustedes me pudiesen ayudar.

#include <stdio.h>
#include <stdlib.h>


struct Nodo {
int info;
struct Nodo * sig;
};

typedef struct Nodo * TipoLista;

TipoLista inserta_por_cabeza(TipoLista lista, int valor)
{
        struct Nodo *nuevo;
nuevo = (Nodo*)malloc(sizeof(struct Nodo));

nuevo->info = valor;
nuevo->sig = lista;
lista = nuevo;
return lista;
}

void muestra_lista(TipoLista lista)
{
struct Nodo * aux;

printf ("->");
for (aux = lista; aux != NULL; aux = aux->sig)
printf ("[%d]->", aux->info);
printf ("|\n");
}

int main(void)
{
TipoLista l;
printf ("Insercion por cola de 1, 5, 10\n");
l = inserta_por_cabeza(l, 1);
l = inserta_por_cabeza(l, 5);
l = inserta_por_cabeza(l, 10);
muestra_lista(l);

system("pause");
}

Este código ingresa datos por la cabeza de la lista, como ustedes verán ingresa los valores 1,5,10. Mi pregunta es, qué tengo que hacer para que el programa ingrese los valores desde el teclado y cuantos valores yo quiera. Como dije anteriormente soy novato y es una duda que no he podido resolver. Muchas Gracias desde ya!!

Akai

O dicho de otra forma, este código lo has visto en un libro o por internet y lo quieres usar sin demasiada idea de lo que estás haciendo.

TipoLista lista;
int valor;
scanf("%d\n",&valor)
lista=inserta_por_cabeza(lista, valor);


Y si lo quieres repetir, usa bucles.

andressitto007

Cita de: Akai en 10 Abril 2011, 22:18 PM
O dicho de otra forma, este código lo has visto en un libro o por internet y lo quieres usar sin demasiada idea de lo que estás haciendo.

TipoLista lista;
int valor;
scanf("%d\n",&valor)
lista=inserta_por_cabeza(lista, valor);


Y si lo quieres repetir, usa bucles.

Muchas gracias por tu respuesta, estoy aprendiendo de libros y cuesta mucho. El codigo ese se pone en el main cierto? disculpa mi ignorancia en el tema.

Akai

Si, iría en el main o donde tu pretendas poner la lectura de datos.

andressitto007

Cita de: Akai en 10 Abril 2011, 22:47 PM
Si, iría en el main o donde tu pretendas poner la lectura de datos.
Muchas gracias. sabes lo pongo en el main, ingreso los números del teclado, pero al terminar de ingresarlos, no me muestra todo los valores.

int main(void)
{
TipoLista lista;
int valor,i;

for (i=1; i<4; i++){
    printf ("Ingrese el valor\n");
scanf("%d\n",&valor);
}
lista=inserta_por_cabeza(lista, valor);
muestra_lista(lista);

system("pause");
}

De verdad disculpa, para ti deben ser preguntas muy idiotas, pero la verdad no sé casi nada y estoy tratando de aprender.

andressitto007

Ya logré hacerlo!!!! Muchas gracias, te pasaste!!!

Akai

No te mostraba todos los valores, porque como imagino que luego viste, lo único que hacías en el bucle, era leer el número. Pero luego insertabas fuera del bucle únicamente el último.
for (i=1; i<4; i++){
    printf ("Ingrese el valor\n");
scanf("%d\n",&valor);
lista=inserta_por_cabeza(lista, valor);
}


Eso sería lo correcto.

Por otro lado, cuando postees código en el foro, utiliza la etiqueta GeSHi que encontrarás en la esquina superior derecha del cuadro de respuesta.