#ifndef __HYPER__
#define __HYPER__

// linked list 
struct DataLink {
	char *value;
    int len;
	int pos;
	struct DataLink *next;
	struct DataLink *end;
};

// a linked list which each link also points to a linked list
struct DataA {
	char *value;
	struct DataLink *row; // points to a linked list
	struct DataA *column; // points to the next link
};

typedef struct DataLink Data;

// the graph structure
struct Graph {
	Data *Edge;
	Data *Path;
	char *content;
	int numEdge;
	int numPath;
	struct Graph *next;
};

// a graph linked list
struct GraphList {
	struct Graph gg;
	struct GraphList *next;	
	int no;
};

// a tree structure
struct tree {
	Data *node;
	Data *edge;
};

struct stack {
	Data *content;
	Data *top;
};


struct treeList {
	struct tree tt;
	struct treeList *next;
	int no;
};

struct Connected_Component {
	Graph G;
	struct Connected_Component *next;
	int number;
};

typedef struct Connected_Component CComponent;

#endif
