数据结构图的问题

tondayong1981 2004-05-08 02:41:23
#include"stdio.h"
#define n 4
#define e 6
typedef struct node
{int adjvex;
struct node *next;
}edgenode;
typedef struct
{int vertex;
edgenode *link;
}vexnode;
typedef struct qnode
{int data;
struct qnode *next;
}linkqlist;

typedef struct
{linkqlist *front,*rear;
}linkqueue;

linkqueue *q;

vexnode ga[n];
int visited[n];


creatadjlist(vexnode *ga)
{int i,j,k;
edgenode *s;
for(i=0;i<n;i++)
{scanf("%d",&ga[i].vertex);
ga[i].link=NULL;
}
for(k=0;k<e;k++)
{scanf("%d%d",&i,&j);
s=(edgenode *)malloc(sizeof(edgenode));
s->adjvex=j;
s->next=ga[i].link;
ga[i].link=s;
s=(edgenode *)malloc(sizeof(edgenode));
s->adjvex=i;
s->next=ga[j].link;
ga[j].link=s;
}
}


DFSL(int i)
{int j;
edgenode *p;
printf("%5d",ga[i].vertex);
visited[i]=1;
p=ga[i].link;
while(p!=NULL)
{if(!visited[p->adjvex])
DFSL(p->adjvex);
p=p->next;
}
}


initlinkqueue(linkqueue *q)
{q->front=(linkqlist *)malloc(sizeof(linkqlist));
q->front->next=NULL;
q->rear=q->front;
}

int EMPTY(linkqueue *q)
{if(q->front==q->rear)
return 1;
else return 0;
}

ENQUEUE(linkqueue *q,int x)
{q->rear->next=(linkqlist *)malloc(sizeof(linkqlist));
q->rear=q->rear->next;
q->rear->data=x;
q->rear->next=NULL;
}
DEQUEUE(linkqueue *q)
{linkqlist *p;
int v;
if(q->front==q->rear)
{printf("queue is empty");v=0;}
else{p=q->front->next;
q->front->next=p->next;
if(p->next==NULL)
q->rear=q->front;
v=p->data;
free(p);}
return v;
}

BFSL(int k)
{int i;
edgenode *p;
linkqueue queue;
q=&queue;
initlinkqueue(q);
printf("%5d",ga[k].vertex);
visited[k]=1;
ENQUEUE(q,k);
while(!EMPTY(q))
{ i=DEQUEUE(q);
p=ga[i].link;
while(p!=NULL)
{if(!visited[p->adjvex])
{visited[p->adjvex]=1;
printf("%5d",ga[p->adjvex].vertex);

ENQUEUE(q,p->adjvex);
}
p=p->next;}
}
}

main()
{int i,j,v,u;
edgenode *p;
creatadjlist(ga);
for(i=0;i<n;i++)
{printf("<%d> %d",i,ga[i].vertex);
p=ga[i].link;
while(p!=NULL)
{printf("->%d",p->adjvex);
p=p->next;
}
printf("->NULL");
printf("\n");
}
printf("1.DFSL:\n");
printf("2.BFSL\n");
printf("3.exit:\n");
scanf("%d",&j);
while(j!=3)
{switch(j)
{case 1:printf("please input start point:\n");scanf("%d",&v);DFSL(v);
printf("\n");break;
case 2:printf("please input another start point:\n");scanf("%d",&u);BFSL(u);
printf("\n");break;}
scanf("%d",&j);
}
}

第一次的DFSL结果正确,BFSL的结果不对,而且程序继续下去也不对。帮改一下。
...全文
135 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tondayong1981 2004-06-30
  • 打赏
  • 举报
回复
大家帮帮忙啊???????怎么我的帖子每人回啊??????????
tondayong1981 2004-06-14
  • 打赏
  • 举报
回复
我的原程序哪儿错了?????????
xiaohai84 2004-06-09
  • 打赏
  • 举报
回复
void DFS(ALGraph G,int v) {
ArcNode *p;
visited[v]=1;
pf("%c",G.vertices[v].data);
for(p=G.vertices[v].firstarc;p!=NULL;p=p->nextarc)
if(!visited[p->adjvex]) DFS(G,p->adjvex);
}

void DFStravels(ALGraph G) { //深度优先遍历
for(int i=0;i<G.vexnum;i++) visited[i]=0;
for(i=0;i<G.vexnum;i++)
if(!visited[i]) DFS(G,i);
}

void BFStravels(ALGraph G) { //广度优先遍历
SqQueue Q;
ArcNode *p;
int u,w;
for(int v=0;v<G.vexnum;v++) visited[v]=0;
InitQueue(Q);//置空的辅助队列Q
for(v=0;v<G.vexnum;v++)
if(!visited[v]) {
visited[v]=1;
pf("%c",G.vertices[v].data);
EnQueue(Q,v);
while(Q.front!=Q.rear) {
DeQueue(Q,u);
for(p=G.vertices[u].firstarc;p!=NULL;p=p->nextarc) {
w=p->adjvex;
if(!visited[w]) {
visited[w]=1;
pf("%c",G.vertices[w].data);
EnQueue(Q,w);
}//if
}//for
}//while
}//if
}//
bestme 2004-05-12
  • 打赏
  • 举报
回复
关注
tondayong1981 2004-05-11
  • 打赏
  • 举报
回复
各位高手,帮帮我,谢谢。
klbt 2004-05-09
  • 打赏
  • 举报
回复
关注,帮你up
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS书管理系统介绍 1.4.1书管理系统需求分析 1.4.2书管理系统系统设计 1.4.3书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视 3.4.1用例视 3.4.2逻辑视 3.4.3并发视 3.4.4组件视 3.4.5部署视 3.5UML形符号 3.5.1用例 3.5.2类 3.5.3对象 3.5.4状态 3.5.5活动 3.5.6顺序 3.5.7协作 3.5.8组件 3.5.9部署 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类概述 6.3类的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类 6.3.5绘制控制类 6.3.6UML中的类与语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象 6.5.1对象概述 6.5.2对象组成 6.5.3类和对象的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态 8.2.1状态概述 8.2.2状态组成 8.2.3绘制员工下班回家状态 8.3活动 8.3.1活动概述 8.3.2活动组成 8.3.3绘制WebShop电子商城活动 8.4活动拾遗 8.4.1活动与流程的比较 8.4.2活动与状态的比较 8.5顺序 8.5.1顺序概述 8.5.2顺序组成 8.5.3绘制WebShop电子商城顺序 8.6协作 8.6.1协作概述 8.6.2协作组成 8.6.3绘制WebShop电子商城协作 8.7 顺序拾遗 8.7.1 顺序与协作的比较 8.7.2 顺序与协作的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件 9.2.1组件概述 9.2.2组件组成 9.2.3绘制WebShop电子商城组件 9.3部署 9.3.1部署概述 9.3.2部署组成 9.3.3绘制WebShop电子商城部署 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

255

社区成员

发帖
与我相关
我的任务
社区描述
其他产品/厂家
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧