elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pregunta con estructuras y Pilas en C - Cual es la opcion correcta.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pregunta con estructuras y Pilas en C - Cual es la opcion correcta.  (Leído 1,908 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Pregunta con estructuras y Pilas en C - Cual es la opcion correcta.
« en: 22 Octubre 2016, 02:45 am »

Hola


Tengo una duda con respecto al tratamiento de estructuras en pilas en C.
Si tengo las siguientes estructuras declaradas

Código
  1. struct s_persona
  2. {
  3.    char nombre[25];
  4.    int edad;
  5.    int fnacimiento;
  6. };
  7. typedef struct s_persona tPers;
  8.  
  9. struct s_nodo
  10. {
  11.    struct s_persona prs;
  12.    struct s_nodo *sig;
  13. };
  14. typedef struct s_nodo *t_nodo;
  15.  


Si yo quiero insertar en una pila elementos de tipo tPers

Cual seria la opcion correcta... Esta

Código
  1. void push(t_nodo* pila,tPers persona)
  2. {
  3.    t_nodo aux=NULL;
  4.    aux=(t_nodo)malloc(sizeof(struct s_nodo));
  5.    if(aux==NULL)
  6.        return;
  7.    aux->prs=persona;
  8.    aux->sig=*pila;
  9.    *pila=aux;
  10. }


Osea asignando directamente toda la estructura o pasando cada dato de la estructura de manera individual como en el siguiente codigo

Código
  1. void push(t_nodo* pila,tPers persona)
  2. {
  3.    t_nodo aux=NULL;
  4.    aux=(t_nodo)malloc(sizeof(struct s_nodo));
  5.    if(aux==NULL)
  6.        return;
  7.    strcpy(((*pila)->prs).nombre,persona.nombre);
  8.    aux->prs.edad=persona.edad;
  9.    aux->prs.fnacimiento=persona.fnacimiento;
  10.    aux->sig=*pila;
  11.    *pila=aux;
  12. }


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pregunta con estructuras y Pilas en C - Cual es la opcion correcta.
« Respuesta #1 en: 22 Octubre 2016, 13:37 pm »

Ambas sirven, con unas pequeñas pautas:

Si no vas a usar punteros de ningún tipo dentro de la estructura, entonces la primera sirve bien.
Si utilizas algún puntero, la primera será incorrecta, pues no copiarás el contenido del puntero. En tal caso, tendrías que hacer una copia manual de lo apuntado por el puntero (si así lo requiere el programa).

Por cierto, en el código, aveces utilizas "struct s_nodo", a veces "struct s_nodo*", a veces "t_nodo" y a veces "t_nodo*". Ten cuidadado al andar mezclando estas estructuras. Yo de ti, ponía:
Código
  1. struct s_nodo
  2. {
  3.    struct s_persona prs;
  4.    struct s_nodo *sig;
  5. };
  6. typedef struct s_nodo t_nodo;
Sin puntero en t_nodo. Ten en cuenta que tPers no es un puntero tampoco, así que o pones ambos como punteros, o ninguno. Sinó queda incongruente.
Además, se supone que el uso del typedef ahí es para evitar utilizar "struct s_nodo".


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con estructuras de datos "pilas"
Programación C/C++
josue_tux 2 8,053 Último mensaje 14 Marzo 2011, 05:55 am
por josue_tux
Pilas C++ usando Estructuras (STRUCT) « 1 2 »
Programación C/C++
charmedever 13 15,443 Último mensaje 21 Noviembre 2011, 21:11 pm
por x64core
No se cual es mi puerto de enlaze correcta.
Seguridad
zyack 4 2,524 Último mensaje 25 Abril 2014, 00:20 am
por zyack
Implementación GIT Cual es la forma correcta? « 1 2 »
Programación General
Pablo Videla 10 7,416 Último mensaje 5 Marzo 2015, 23:04 pm
por EFEX
[Pregunta]: ¿Cuál es la formula correcta?
Desarrollo Web
Leguim 2 2,357 Último mensaje 3 Septiembre 2020, 01:52 am
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines