C estructuras recursivas

JuAn4k4

Me estoy volviendo loco porq no lo encuentro por ningun lado, necesito que 2 estructuras tengan cada una un puntero a la otra.

estructura1

  • puntero estr2

estr2

  • puntero estr1

¿ Como se declara una para que vea que existe ?

Esque me salta todo el rato:
'PolygonPtr' : missing storage-class or type specifiers

Dod-Evers

Si haces como definicion anterior al struct 2, pero sin definirlo? No sé, como lo de las funciones en c.

Estilo:

struct2
struct1{

}

struct2{

}

Dostoievski

struct A;

struct B { struct A *a };
struct A { struct B *b };

#4 :(

Dod-Evers

#3 eres un copiota. Me voy a chivar.

Buffoncete

Como ya te han contestado antes te pregunto una cosa.

Lo haces por curiosidad o por que tienes algo pensado ? básicamente si tienes que llegar a enlazar estructuras de esa manera es que haces algo mal.

YiTaN

#5 ¿Y cómo se puede hacer entonces una lista enlazada?

Buffoncete

No es muy complicado y no hay referencias cruzadas.

estructura Nodo
{
       relleno de cada elemento de la lista sin apuntar a lista
}

estructua lista
{
         lista * siguiente;
         Nodo * elemento;
}
Dod-Evers

Juanaka, estás haciendo informatica gráfica o similar?

JuAn4k4

si IG, es precisamente para el visualizador de figuras 3d :S

Y el MS visual c++ este me daba por culo para hacer precisamente eso y pff

No he ido a clase en todo el año ni he hecho las practicas ni nada y me he puesto con eso.

En realidad la recursividad es mas larga que 2 estructuras, pero hay un ciclo de "dependencias"

PolygonCell -> VertexList -> VertexCell -> PolygonList -> PolygonCell

typedef char CharString[100];


typedef struct {
	int length;
	CharString char_at;
}String;

typedef float Matrix[3][3];

typedef struct {
	float x,y,z;
}Vector;


typedef struct {
	int x,y,z;
}ScreenRec;



typedef struct{
	PolygonPtr poly;
	PolygonListPtr rest;
}PolygonListCell, *PoygonListPtr;

typedef struct{
	Vector local_pos,world_pos,eye_pos,vertex_normal;
	ScreenRec screen_pos;
	PolygonListPtr poly_list_head;
	VertexPtr next;
}VertexCell,*VertexPtr;


typedef struct{
	VertexPtr vertex;
	VertexListPtr rest;
}VertexListCell, *VertexListPtr;

typedef struct{
	VertexListPtr vertex_list_head;
	Vector poly_normal;
	int poly_visible;
	PolygonPtr next;
}PolygonCell,*PolygonPtr;

typedef struct{
	int no_polygons;
	PolygonPtr polygon_head;
	SurfacePtr next;
}SurfaceCell,*SurfacePtr;



typedef struct{
	String name;
	int id_no,no_vertices,no_surfaces;
	SurfacePtr surface_head;
	VertexPtr vertex_head;
	Matrix transformation;
	ObjectPtr next;
}ObjectCell,*ObjectPtr;

Bueno tras 3 minutos ( es lo que me ha costado arreglarlo... en fin )
he quitado los typedef, quitado los punteros ( como tipo ) , y los he metido a mano, y compila.


 struct PolygonListCell{
	struct PolygonCell *poly;
	struct PolygonListCell *rest;
};

 struct VertexCell{
	Vector local_pos,world_pos,eye_pos,vertex_normal;
	ScreenRec screen_pos;
	struct PolygonListCell *poly_list_head;
	struct VertexCell *next;
};


 struct VertexListCell{
	struct VertexCell *vertex;
	struct VertexListCell *rest;
};

 struct PolygonCell{
	struct VertexListCell *vertex_list_head;
	Vector poly_normal;
	int poly_visible;
	struct PolygonCell *next;
};

 struct SurfaceCell{
	int no_polygons;
	struct PolygonCell *polygon_head;
	struct SurfaceCell *next;
};



 struct ObjectCell{
	String name;
	int id_no,no_vertices,no_surfaces;
	struct SurfaceCell *surface_head;
	struct VertexCell *vertex_head;
	Matrix transformation;
	struct ObjectCell *next;
};

Me habia puesto a hacerlo en java con el JOGL, pero joer no me empapo de nada, no se pintar en la pantalla mas que en el metodo display() , pero no se cambiarlo asiq nada, parecia facil desde java :S

¿ Tu como lo hiciste ? ¿ en c++ , java ,ada ...?

Dod-Evers

Yo no lo hice, pero tengo colegas que sí que la hicieron... Cuando he visto lo de Polygon... Si quieres puedo preguntar "por ahí..."

Una de las mejores que vi estaba en java...

JuAn4k4

Si si , en java, si supiera pintar en pantalla una linea , un punto y limpiar la pantalla, esta todo hecho xD, pasa q el java2d no lo llegue a encontrar bien explicao, y el jogl es un monstruo para la mierda de pintar lineas y puntos.

Dod-Evers

Pues a ver cuando llegue a casa y te puedo mandar algo de dibujar lineas y puntos que de eso no tengo que preguntar a nadie...

Lo que tengo es de la práctica del laberinto de ISII... todo en 2d.

Usuarios habituales

  • Dod-Evers
  • JuAn4k4
  • Buffoncete
  • YiTaN
  • Dostoievski