A ver los que saben c más que yo...

Antonio
por el 24/06/2008
Yo tengo una lista en la que tengo que meter dni y nombre por ejemplo. ordenada por dni como campo clave.
hago la estructura como esta
typedef struct _nodo{
int dni
char nombre [20];
struct _nodo*siguiente;
}tiponodo;
typedef tiponodo *pnodo;
typedef tiponodo *Lista;

pongo las funciones que me hacen falta y pasö a la funcion principal
main
la cuestión es si yo aqui pido un dni y un nombre de usuario, si se lo puedo pasar a la función insertar mediante esta forma
insertar(&lista, dni,nombre);
pero claro, luego en la función insertar, cómo reservo memoria para dos elementos?
void insertar(Lista *lista, int dni, char nombre){
mi duda está aqui, cómo reservo yo memoria para que almacenen dos datos pasados a esta función.
creo el nodo
pnodo nuevo, anterior;
nuevo=(pnodo)malloc sizeof(tipoNodo));
nuevo->valor=dni;
nuevo->nombre=nombre;
ESTO ÚLTIMO ESTARÍA BIEN?????




SALUDOS CORDIALES!!!!
Subir
OFERTAS Ver todas
  • Remo PP-1472-PS Pinstripe Clear
    92 €
    Ver oferta
  • Millenium MDT4 Drum Throne Round
    44 €
    Ver oferta
  • Millenium MPS-850 E-Drum Set
    598 €
    Ver oferta
jordiasb
por el 24/06/2008
Disculpa, pero como verás en la portada del foro y del portal este es el mayor sitio bara los amantes de la bateríoa en HABLA HISPANA.

Así que te agradeceríamos que hablases en castellano para que todos te entendamos.

Un saludo cordial del equipo de moderación y administración de BATACAS.





















:mrgreen:
Subir
Kikifante
por el 24/06/2008
agregame al msn y te lo intento resolver que el jueves tengo examen de eso
Subir
Monitus
por el 24/06/2008
ejem ejem, no tengo nada más que decir...





que nooooo que es bromaaaa! ojalá pudiera ayudarte pero tengo tostado el cerebro de tanto soldar y no puedo pensar ahora :baile:
Subir
Antonio
por el 24/06/2008
jordiasb escribió:
Disculpa, pero como verás en la portada del foro y del portal este es el mayor sitio bara los amantes de la bateríoa en HABLA HISPANA.

Así que te agradeceríamos que hablases en castellano para que todos te entendamos.

Un saludo cordial del equipo de moderación y administración de BATACAS.


luego me llamarás como la otra noche y me dirás que te sientes solo y con ganas de rabo..., y yo como un tonto picaré.
Monitus escribió:
ejem ejem, no tengo nada m&#225]
jaajajajaja ese link está de la ostia, y si, antes de poner nada aqui uso el google, que soy más curioso que vago.
en fin, que dios reparta suerte, aunque suspenderé el examen, esto de estudiar y trabajar no es nada sencillo..., encima como en verano el resto de los técnicos tienen vacaciones me ha dicho el jefe que si puedo ir 3 horitas por la tarde, he dicho que si porque [mode acento catalan=ON] LA PELA ES LA PELA[mode=OFF] pero me ha jodido el estudiar algo por las tardes pa septiembre y el sacarme el carnet de conducir, asi que a ver cómo collons me organizo.....

PD: REID Y CELEBRAD QUE SEGUIMOS VIVOS!!!!
Subir
R_Diaz
por el 24/06/2008
Eso es una lista enlazada, no?

Uf, hace un montón que no hago nada en C, pero si no recuerdo mal malloc devuelve un puntero a la dirección de memoria que estás reservando, así que debería bastar con nuevo = malloc (sizeof (tipoNodo)); , no necesitas hacer un casting porque "nuevo" ya es de tipo *pnodo.

Claro que ahora mismo no recuerdo si al declarar

pnodo nuevo, anterior;

tienes que volver a declararlas como punteros o no

pnodo *nuevo, *anterior;

(que me da que no)

Y por supuesto recuerda liberar esa memoria cuando ya no se utilice usando free(nuevo); , que si no te catean :mrgreen:

Joder, esto de la programación se ve que no puede dejarse xD
Subir
Nuevo post

Regístrate o para poder postear en este hilo