用邻接矩阵创建有向图(第一次发帖,求助)

yoyo13147569 2010-09-08 09:27:37
// GraphExample.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;

#define MAX_VERTEX_NUM 10
#define INFINITY 32678
#define Error -1
#define Ok 1

typedef int AdjType ;
typedef int OtherInfo;


typedef enum{DG,DN,UNG,UDN} GraphKind;
typedef char VertexData;
typedef struct ArcNode{
AdjType adj;
OtherInfo info;
}ArcNode;

typedef struct
{
VertexData vexs[MAX_VERTEX_NUM];
ArcNode arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
int vexnum,arcnum;
GraphKind kind;
}AdjMatrix;

int LocateVertex( AdjMatrix *G,VertexData v)
{
int k,j=Error;
for(k=0;k<G->vexnum;k++)
if(G->vexs [k]==v)
{j=k;break;}
return(j);
}

int CreateDN(AdjMatrix *G)
{
Ok;
int i,j,k,weight;VertexData v1,v2;
cin>> G->arcnum>>G->vexnum;
for(i=0;i<G->vexnum;i++)
{
for(j=0;j<G->vexnum;j++)
G->arcs[i][j].adj=INFINITY;
}
for(i=0;i<G->vexnum;i++)
{
cin>> G->vexs [i];
}

for(k=0;k<G->arcnum ;k++)
{
cin>>v1>>v2>>weight;
i=LocateVertex(G,v1);
j=LocateVertex(G,v2);
G->arcs [i][j].adj=weight;
}
return (Ok);
}

void printG(AdjMatrix *G)
{int i,j;
cout<<"图的各顶点是:"<<endl;
for(i=0;i<G->vexnum;i++)
cout<<G->vexs[i]<<" ";
cout<<endl;
cout<<"图的邻接矩阵是:"<<endl;
for(i=0;i<G->vexnum ;i++)
{for(j=0;j<G->vexnum ;j++)
cout<< G->arcs[i][j]<<" ";
cout<<endl;
}
}


int _tmain(int argc, _TCHAR* argv[])
{

AdjMatrix G;
CreateDN(&G);
printf(&G);

return( 0);
}

错误 1 error C2679: 二进制“<<”: 没有找到接受“ArcNode”类型的右操作数的运算符(或没有可接受的转换) c:\users\administrator\documents\visual studio 2008\projects\graphexample\graphexample\graphexample.cpp 77 GraphExample

错误 2 error C2664: “printf”: 不能将参数 1 从“AdjMatrix *”转换为“const char *” c:\users\administrator\documents\visual studio 2008\projects\graphexample\graphexample\graphexample.cpp 88 GraphExample

该如何改呢?

另外,我想用指针类型,代码如下

AdjMatrix *G;
G=(AdjMatrix *)malloc(sizeof(AdjMatrix));

也是报错:(暂时将)
错误 2 error C2065: “AdjMtrix”: 未声明的标识符 c:\users\administrator\documents\visual studio 2008\projects\graphexample\graphexample\graphexample.cpp 87 GraphExample
错误 3 error C2070: “'unknown-type'”: 非法的 sizeof 操作数 c:\users\administrator\documents\visual studio 2008\projects\graphexample\graphexample\graphexample.cpp 87 GraphExample


...全文
714 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoyo13147569 2010-09-08
  • 打赏
  • 举报
回复
我自己把问题解决了。。。
汗死
都是很基本的问题。
1.pritfG 写成 printf
2.ArcNode是结构体,不能直接输出
改为: cout>>ArcNode[i][j].adj>>" ";

另外,给指针类型分配空间后
要用free(G);

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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