好文档 - 专业文书写作范文服务资料分享网站

C语言搜索策略实践报告 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

char filename[50]; Tree *tree=NULL; Node start,end;

Paths *paths=NULL,*p=NULL; Brother *path=NULL; Status flag=FALSE;

printf(\请输入树文件的文件路径:\\n\scanf(\

if((tree=CreatTree(tree,filename))==NULL)//打开文件失败 { }

printf(\您导入的树所有节点如下:\PutAllNode(tree); printf(\请输入起点:\scanf(\printf(\请输入终点:\scanf(\

flag=SearchPath(tree,start,end,&path); if(paths!=NULL) { }

printf(\从起点 %s 到终点 %s ,Status= %d \\n\printf(\路径是:\if(flag==TRUE) { } else { }

printf(\

45

return 0;

flag=TRUE;

path=RevPath(path); PutPath(path);

printf(\无\\n\

}

附录四:

流程图:

#include #include #include #include

#define NAMESIZE 30 //节点名称大小 #define TRUE 1 #define FALSE 0

46

typedef int Status;//定义标识符,表示真或假 typedef char Node[NAMESIZE]; typedef struct NEIGHBORNODE {

Node node;//相邻节点名称

struct NEIGHBORNODE *next;//下一个节点指针

} NEIGHBOR;//重命名相邻节点类型

typedef NEIGHBOR Stack;//相邻节点类型堆栈 typedef NEIGHBOR Path;//相邻节点类型路径

typedef struct GRAPHNODE {

typedef struct PATH//路径结构体 {

NEIGHBOR *AddABrother(NEIGHBOR *br,Node node)//在br兄弟节点群中增加一个兄弟节点node {

NEIGHBOR *b1,*b2;

b1=(NEIGHBOR *)malloc(sizeof(NEIGHBOR));//动态开辟空间 strcpy(b1->node,node);//赋值 b1->next=NULL;//初始化

if(br==NULL) //之前没有兄弟 node就是第一个兄弟节点 { }

else//之前有兄弟节点 node就是最后一个兄弟节点

47

Node node;//节点名称 NEIGHBOR *children;//相邻节点

struct GRAPHNODE *next;//下一个节点指针

} GRAPH;//重命名图类型

Path *path; struct PATH *next;

}Paths;//重命名路径结构体

br=b1;

}

{ }

return br;//返回兄弟节点指针

b2=br; while(b2->next) { }

b2->next=b1;

b2=b2->next;

GRAPH *Form_Pa_Ch(Node pa,NEIGHBOR *br)//双亲节点和兄弟节点构成子图 { }

GRAPH *AddParentToTree(GRAPH *tree,GRAPH *parent)//双亲节点加入到图中 {

GRAPH *t=tree;//临时图 if(t==NULL) //图不存在 { }

else//图存在 {

while(t->next) { }

t->next=parent;//带兄弟节点的双亲节点加入到图的最后

48

GRAPH *parent;

parent=(GRAPH *)malloc(sizeof(GRAPH));//动态开辟空间 strcpy(parent->node,pa);//赋值

parent->children=br;//兄弟节点和双亲节点构成子图 parent->next=NULL;

return parent;//返回带兄弟节点的双亲结点,即子图

tree=parent;//带兄弟节点的双亲节点 即图

t=t->next;

}

}

return tree;//返回图指针

NEIGHBOR *ClearBrothers(NEIGHBOR *br)//回收兄弟节点空间(删除兄弟节点) { }

GRAPH *ClearGraph(GRAPH *tree)//回收图空间 { }

void CreateStr(char *str)//文本字符数组转换为多个字符串 {

char *s=str;//临时字符串 while(*s) {

if(*s=='/') //如果是'/',化为字符串结束标记'\\0' {

49

NEIGHBOR *b=br;//临时兄弟节点 while(br) { }

return br;//返回NULL

b=br; br=br->next; free(b);//回收空间

GRAPH *tr=tree;//临时图 while(tree) { }

return tree;//返回NULL

tr=tree; tree=tree->next; free(tr);//回收空间

C语言搜索策略实践报告 - 图文 

charfilename[50];Tree*tree=NULL;Nodestart,end;Paths*paths=NULL,*p=NULL;Brother*path=NULL;Statusflag=FALSE;printf(\请输入树文件
推荐度:
点击下载文档文档为doc格式
3cybp3y9ry06i7k4fff923x6i11fyp00rsg
领取福利

微信扫码领取福利

微信扫码分享