Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema de estructuras en C

Estas en el tema de Problema de estructuras en C en el foro de C/C++ en Foros del Web. Buenas tardes Tengo un pequeño problema en C que no sé como resolver. Tengo implementación de una lista enlazada simple (en sus respectivos modulos) y ...
  #1 (permalink)  
Antiguo 13/02/2013, 06:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 9 años, 11 meses
Puntos: 0
Problema de estructuras en C

Buenas tardes

Tengo un pequeño problema en C que no sé como resolver.

Tengo implementación de una lista enlazada simple (en sus respectivos modulos) y con esa lista tengo que implementar una pila. La lista esta terminada y me funciona bien. El problema me viene a la hora de utilizar las funciones para la pila.

Por ahorrar código solo pondré lo mínimo, que es con lo no se hacer para que sea más legible.


lista.h //llamado m.h
Código:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>


struct Nodo {
	int dato;
	struct Nodo * siguiente;
};


typedef struct Nodo * PNodo;


void inicializarlista(PNodo *lista);

lista.c
Código:
#include "m.h"


void inicializarlista(PNodo *lista)
{
     	*lista=NULL;     
}

pila.h
Código:
#include "m.h"


struct Pila {
	PNodo * lista_pila;
	int contador;
};


typedef struct Pila * PPila;


void ini(PPila * pila);

pila.c
Código:
#include "pila.h"


void ini(PPila * pila)
{
	PNodo aux = pila->lista_pila;
	inicializarlista(aux);
}

main.c
Código:
#include "pila.h"


int main()
{
    	PPila lista;
    	ini(&lista);
    	
	return 0;
	
}

El error me viene en el pila.c en la función de inicializar, ya que me dice que no puedo acceder a lista_pila porque pila no es una estructura o union
  #2 (permalink)  
Antiguo 13/02/2013, 07:11
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 15 años
Puntos: 606
Respuesta: Problema de estructuras en C

Yo hace ya tiempecillo que no toco C pero me llama la atención que quieras usar "pila->lista_pila" cuando pila no apunta a ningún lugar. Es decir, es un puntero de tipo Pila, pero no apunta a ningún lado. Es decir, no has hecho un malloc y diria que es necesario. Por eso, cuando hacer "pila->lista_pila" estás intentando acceder a un miembro de la estructura Pila, pero como "pila" solo es una dirección de memoria, no está apuntanto a ninguna estructura de tipo Pila en memoria. No se si te he liado :3
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 13/02/2013, 07:52
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Problema de estructuras en C

Cita:
Iniciado por Malenko Ver Mensaje
Yo hace ya tiempecillo que no toco C pero me llama la atención que quieras usar "pila->lista_pila" cuando pila no apunta a ningún lugar. Es decir, es un puntero de tipo Pila, pero no apunta a ningún lado. Es decir, no has hecho un malloc y diria que es necesario. Por eso, cuando hacer "pila->lista_pila" estás intentando acceder a un miembro de la estructura Pila, pero como "pila" solo es una dirección de memoria, no está apuntanto a ninguna estructura de tipo Pila en memoria. No se si te he liado :3
He cambiado de pasar PPila a pasar la estructura entera y me compila bien, solo que al ejecutar me da violación de segmento
  #4 (permalink)  
Antiguo 13/02/2013, 08:51
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 15 años
Puntos: 606
Respuesta: Problema de estructuras en C

Cita:
Iniciado por Xubini Ver Mensaje
He cambiado de pasar PPila a pasar la estructura entera y me compila bien, solo que al ejecutar me da violación de segmento
Que un programa compile no quiere decir que vaya a funcionar bien. Y en C/C++ aún más ya que el tema de los punteros no se puede comprovar en tiempo de compilación.

El motivo de la violación de segmento es justamente lo que te comenté en mi primera respuesta :)
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 14/02/2013, 14:38
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 11 años
Puntos: 94
Respuesta: Problema de estructuras en C

Hola! yo tambien ando medio oxidado con C, pero sino me equivoco aux es un puntero y la funcion inicializarlista recibe un puntero a puntero. Deberias pasar &aux


Saludos
  #6 (permalink)  
Antiguo 14/02/2013, 16:06
 
Fecha de Ingreso: agosto-2008
Mensajes: 240
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Problema de estructuras en C

Hola,

puedes (y yo diría que debes) implementar la pila con elementos del tipo PNodo. Tal y como lo estás haciendo, cada nodo de la lista PPila contiene (o es el primer nodo de) una lista de tipo PNodo (lista de lista).

Un saludo,
gonzo

Etiquetas: estructuras, funcion, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:10.