#include "hyper.h"
int search_pos(Data *string, char *e);
Data *Datacat(Data *string1, Data *string2);
char *strreplace(char *string, int index, char e);
Data *intersection(Data *string1, Data *string2);
Data *unions(Data *string1, Data *string2);
char *search_string(Data *string, int i);
Data *truncateData(Data *string,char *e);
Data *truncateData2(Data *string,char *e);
Data *truncateDatas(Data *string1,Data *string2);
Data *copyData(Data *string);
int DataLength(Data *string);
Data *setData(Data *head,char *value);
Data *appendData(Data *head,char *value);
DataA *appendDataA(DataA *head, char *value);
Data *appendData2(Data *head,char *value);
int count(Data *head);
void show_Data(Data *head);
void show_DataA(DataA *head);
char *stringcat(char *string, char e);
int searchc(char *string, char e);
bool isEqual(Data *data1, Data *data2);
Data *minusData(Data *data1, Data *data2);
bool check_pair(Data *data, char *string1, char *string2);
bool NoDuplicateData(Data *Epc,char *temp1,char *temp2);
Data *newData();
DataA *newDataA();
Data *truncatePair(Data *data,char *p1,char *p2);
bool check_contain(Data *s1,Data *s2);
Data *find_path(Graph L,char *data);
Data *find_pie_edge(Graph L, Data *path);
void delete_graph(Graph L);
void delete_tree(tree T);
void delete_data(Data *dd);
void delete_ccomponent(CComponent *cc);
void show_graph_data(Graph L);
char *generate_node(char *s, int num);
DataA *locate_DataA(DataA *dataA, int index);
void delete_dataA(DataA *dataA);
GraphList *newGraph();
GraphList *appendGraph(GraphList *gg, Graph g);
GraphList *locate_Graph(GraphList *gg, int index);
void delete_GraphList(GraphList *gg);
treeList *newTree();
treeList *appendTree(treeList *tl, tree t);
treeList *locate_Tree(treeList *tl,int index);
void delete_treeList(treeList *Tip);
Graph reduction(Graph g,Graph **ss,Data **PathSet);
stack push(stack s, char *value);
stack pop(stack s);
