图怎么实现不了?请高手看看这个C代码

xinloveshan 2008-11-19 09:14:47
#include<stdio.h>
#include<stdlib.h>
typedef struct graph *Graph;
typedef struct graph{
int NoEdge;
int e;
int n;
int **a;
}AWDgraph;

int **Make2DArray(int x,int y,int flag)
{
int **p;
int i,j;
p=(int **)malloc(x*sizeof(int*));
for(i=1;i<=x;i++)
p[i]=(int *)malloc(y*sizeof(int));
for(i=1;i<=x;i++)
for(j=1;j<=y;j++)
p[i][j]=flag;
return p;
}

Graph GraphInit(int n,int noedge)
{
Graph G=(struct graph*)malloc(sizeof *G);
G->n=n;
G->e=0;
G->NoEdge=noedge;
G->a=Make2DArray(G->n+1,G->n+1,noedge);
return G;
}

int GraphEdges(Graph G)
{ return G->e;}

int GraphVertices(Graph G)
{ return G->n;}

int GraphExist(int i,int j,Graph G)
{
if(i<1||i>G->n||j<1||j>G->n||G->a[i][j]==G->NoEdge) return 0;
return 1;
}

void GraphAdd(int i,int j,int w,Graph G)
{
if(i<1||j<1||i>G->n||j>G->n||i==j||G->a[i][j]!=G->NoEdge) {printf("Bad input.\n");exit(1);}
G->a[i][j]=w;
G->e++;
}

void GraphDelete(int i,int j,Graph G)
{
if(i<1||j<1||i>G->n||j>G->n||G->a[i][j]==G->NoEdge) {printf("Bad input.\n");exit(1);}
G->a[i][j]=G->NoEdge;
G->e--;
}

int OutDegree(int i,Graph G)
{
int j,sum=0;
if(i<1||i>G->n) {printf("Bad input.\n");exit(1);}
for(j=1;j<=G->n;j++)
if(G->a[i][j]!=G->NoEdge)
sum++;
return sum;
}

int InDegree(int i,Graph G)
{
int j,sum=0;
if(i<1||i>G->n) {printf("Bad input.\n");exit(1);}
for(j=1;j<=G->n;j++)
if(G->a[j][i]!=G->NoEdge)
sum++;
return sum;
}

void GraphOut(Graph G)
{
int i,j;
for(i=1;i<=G->n;i++){
for(j=1;j<G->n;j++)
printf(" %d ",G->a[i][j]);
printf("\n");
}
}

void main()
{
Graph g;
g=GraphInit(5,0);
Graph out(g);
}
运行了但没显示矩阵
...全文
36 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuchangyong 2008-11-19
  • 打赏
  • 举报
回复
是调用GraphOut函数 不是定义一个对象的Graph out
Non_Recursive 2008-11-19
  • 打赏
  • 举报
回复
好像楼主自已找到问题了,代码风格还有待改进啊,^_^

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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