鱼C论坛

 找回密码
 立即注册
查看: 4182|回复: 0

这错哪里啊

[复制链接]
发表于 2011-12-10 23:47:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
#include<string>
using namespace std;
const int max=100;
struct ArcNode{
int adjvex;
ArcNode *nexttarc;
};
struct VexNode{
int vexdata;
ArcNode *firstarc;
};
VexNode adjlist[max];
class Graph
{
private:
   static  string str;
bool *visited;
VexNode *adjlist;
int n;
void dfs0(int v0, void visit(int &v));
void bfs0(int v0, void visit(int &v));
public:
Graph(int l);
// Graph(VexNode adjl[], int l);
// Graph(int vex[], int arc[], int n);
// int ODVex(int data);
void instVex(int data);
void instArc(int v1,int v2);
string dfs(int v0, void visit(int &v));
string bfs(int v0, void visit(int &v));
static void func1(int &v);
// static void func2(int &v);
}
void Graph::func1(int &v){
    str=str+IntToStr(v)+"";
}
Graph::Graph(int l){
    n=0; max=l;
visited=new bool[l];
    adjlist=new VexNode[l];
}
void Graph::instVex(int data){
    if(n<max)
  adjlist[n++].vexdata=data;
}
void Graph::instArc(int v1, int v2){
    ArcNode *p1, *p2;
p1=new ArcNode;
p2=new ArcNode;
p1->nexttarc=adjlist[v1].firstarc;
p2->nexttarc=adjlist[v2].firstarc;
adjlist[v1].firstarc=p1;
adjlist[v2].firstarc=p2;
p1->adjvex=v2;
p2->adjvex=v1;
}
void Graph::dfs0(int v0, void visit(int &v)){
   ArcNode *p;
   visited[v0]=true;
   visit(adjlist[v0].vexdata);
   p=adjlist[v0].firstarc;
   while(p!=null){
     if(visited[p->adjvex]==false)
   dfs0(p->adjvex,visit);
  p=p->nexttarc;
   }
}
String Graph::dfs(int v0, void visit(int &v)){
   int i;
   for(i=0; i<n; i++)
    visited[i]=false;
   str="深度优先";
   dfs0(v0,visit);
   return str;
}
void Graph::dfs0(int v0, visit(int &v)){
   ArcNode *p;
   int v, adjv, front,rear;
   int q[100];
   visited[v0]=true;
   visit(adjlist[v0].vexdata);
   front=1;rear=1;
   q[rear]=v0;rear=rear+1;
   while(front!=rear){
      v=q[front]; front=front+1;
   p=adjlist[v].firstarc;
   while(p!=null){
      adjv=p->adjvex;
   if(visited[adjv]==false){
      visited[adjv]==true;
   visit(adjlist[adjv].vexdata);
   q[rear]=adjv;rear=rear+1;
   };
   p=p->nexttarc;
   }
   }  
}
String Graph::bfs(int v0, void visit(int &v)){
    int i;
for(i=0; i<n; i++)
  visited[i]==false;
str="广度优先";
bfs0(v0, visit);
return str;
}
void main(){
   Graph g1(10);
   for(int i=0; i<4; i++)
    g1.instVex(i);
   g1.instArc(0,1); g1.instArc(0,2); g1.instArc(3,1); g1.instArc(3,2);
   cout<<g1.dfs(0,Graph::func1)<<endl;
   cout<<g1.bfs(0,Graph::func1)<<endl;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 11:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表