2 sunqiang20111 sunqiang20111 于 2014.11.11 17:13 提问

简单的图实现,编译成功运行不了,求指导

包括4个部分代码

[ 主函数: ]1

#include
#include
typedef char DataType;
#define MaxSize 100
#define MaxVertices 10
#define MaxEdges 100
#define MaxWeight 10000

#include"AdjMGragh.h"
#include"AdjMGraghCreate.h"

int main()
{
AdjMGragh g1;
DataType a[]={'A','B','C','D','E'};
RowColWeight rcw[]={{0,1,10},{0,4,20},{1,3,30},{2,1,40},{3,2,50}};
int n=5,e=5;
int i,j;

CreateGragh(&g1,a,n,rcw,e);
DeleteEdge(&g1,0,4) ;
DeleteVerten(&g1,3);

printf("节点集合为:");
for(i=0;i<g1.Vertices.size;i++) 
    printf("%c   ",g1.Vertices.list[i]);
    printf("\n");
printf("权值集合为:\n");
for(i=0;i<g1.Vertices.size;i++)
{
    for(j=0;j<g1.Vertices.size;j++)
    printf("%5d  ",g1.edge[i][j]);

    printf("\n");
}

}

头文件:"AdjMGragh.h";AdjMGraghCreate.h;SeqList;

** AdjMGragh.h: **
#include"SeqList.h"
#include
#include
#define MaxSize 100
#define MaxVertices 10
#define MaxEdges 100
#define MaxWeight 10000
typedef struct
{
SeqList Vertices;
int edge[MaxVertices][MaxVertices];
int numOfEdges;
}AdjMGragh;

void Initiate(AdjMGragh *G,int n)
{
int i,j;

for(i=0;i for(j=0;j {
if(i==j) G->edge[i][j]=0;
else G->edge[i][j]=MaxWeight;
}
G->numOfEdges=0;
ListInitiate(&G->Vertices);
}

void InsertVertex(AdjMGragh *G,DataType vertex)
{
ListInsert(&G->Vertices,G->Vertices.size,vertex);

}

void InsertEdge(AdjMGragh *G,int v1,int v2,int weight)
{
if(v1G->Vertices.size||v2G->Vertices.size)
{
printf("参数v1或v2越界出错!\n");
exit(1);
}

G->edge[v1][v2]=weight;
G->numOfEdges++;

}

void DeleteEdge(AdjMGragh *G,int v1,int v2)
{
if(v1G->Vertices.size||v2G->Vertices.size)
{
printf("参数v1或v2越界出错!\n");
exit(1);
}
if(G->edge[v1][v2]==MaxWeight||v1==v2)
{
printf("该连接不存在!\n");
exit(0);
}
G->edge[v1][v2]=MaxWeight;
G->numOfEdges--;
}

void DeleteVerten(AdjMGragh *G,int v)
{
int n=ListLength(G->Vertices),i,j;
DataType x;

for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    if(((i=v)||(j=v))&&G->edge[i][j]>0&&G->edge[i][j]<MaxWeight)
    G->numOfEdges--;
for(i=v;i<n;i++)
for(j=0;j<n;j++)
{
    G->edge[i][j]=G->edge[i+1][j];
} 

for(i=0;i<n;i++)
for(j=v;j<n;j++)
{
    G->edge[i][j]=G->edge[i][j+1];
}

ListDelete(&G->Vertices,v,&x);

}

int GetFirstVex(AdjMGragh G,int v)
{
int col;
if(vG.Vertices.size)
{
printf("参数v1越界出错!\n");
exit(1);
}

for(col=0;col<G.Vertices.size;col++)
if(G.edge[v][col]>0&&G.edge[v][col]<MaxWeight) return col;
return col;
return -1;

}

int GetNextVertices(AdjMGragh G,int v1,int v2)
{
int col;
if(v1MaxWeight||v2MaxWeight)
{
printf("参数v1或v2越界!\n");
exit(1);
}

for(col=v1+v2;col<G.Vertices.size;col++)
{
    if(G.edge[v1][col]>0&&G.edge[v1][col]<MaxWeight) return col;
    return -1;
}

}

** AdjMGraghCreate.h: **
typedef struct
{
int row;
int col;
int weight;
}RowColWeight;

void CreateGragh(AdjMGragh *G,DataType V[],int n,RowColWeight E[],int e)
{
int i,k;
Initiate(G,n);

for(i=0;i<n;i++)
{
    InsertVertex(G,V[i]);
}
for(k=0;k<e;k++)
InsertEdge(G,E[k].row,E[k].col,E[k].weight);

}

** SeqList.h: **
#include
#define MaxSize 100
typedef struct
{
DataType list[MaxSize];
int size;

}SeqList;

void ListInitiate(SeqList *L)
{
L->size=0;
}

int ListLength(SeqList L)
{
return L.size;
}

int ListInsert(SeqList *L,int i,DataType x)
{
int j;
if(L->size>=MaxSize)
{
printf("顺序表已无法插入!\n");
return 0;
}
else if(iL->size)
{
printf("参数不合法!\n");
return 0;
}
else
{
for(j=L->size;j>i;j--) L->list[j]=L->list[j-1];
L->list[i]=x;
L->size++;
return 1;
}
}

int ListDelete(SeqList *L,int i,DataType *x)
{
int j;
if(L->size<=0)
{
printf("顺序表已无法删除!\n");
return 0;
}
else if(iL->size)
{
printf("参数不合法!\n");
return 0;
}
else
{
*x=L->list[i];
for(j=L->size;j>i;j--) L->list[j-1]=L->list[j];
L->size--;
return 1;
}
}

int ListGet(SeqList L,int i,DataType *x)
{
if(iL.size-1)
{
printf("参数不合法!\n");
return 0;
}
else
{
*x=L.list[i];
return 1;
}
}
DataType ListElm(SeqList *L,int i)
{
return L->list[i];
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
你是不是也经常遇到Xcode编译成功,但又无法运行的情况?
使用模拟器或真机测试时,出现如下提示: 这里可以将 Executable file string 里的内容改为 ${PRODUCT_NAME} 然后重启Xcode(完全退出XCode,不是关闭当前项目再打开),模拟器,真机可以正常运行,问题解决! 其他可供参考解决方法: A.修改info.plist 里Bundle identifier里面${
Java文件编译成功后的class文件无法执行
平时用惯了Eclipse,今天偶尔在
Xcode能编译运行成功,但是模拟器没有任何反应
goole了好久,都不知道什么原因,后来发现是自己设置的原因,改下这个设置Product--->Scheme,如下截图:Executable竟然设置成none了,所以模拟器才会不出来
能够编译,为啥就是不能运行通过???
先上代码(PS :特简单的一段): import java.io.*; class A { public static void main(String args[]) throws Exception { ObjectInputStream input = new ObjectInputStream(new FileInputStream("MyClass.java")); My
xcode 编译成功但是模拟器无法运行问题,product中run按钮为灰色问题
当遇到此问题时,首先点击product——scheme  检查当前项目是否被选中, 如图所示: 如果被选中,则点击editscheme,如图所示: 得到下图: 检查executable是否为空,若为空,则选中当前项目,至此,问题解决。
linux下安装codeblocks及写完程序之后编译成功但无法运行的原因
一:在软件中心输入codeblocks,然后点击安装,等着装完就行了。        再按ctrl+alt+t 打开终端 输入 sudo apt-get install gcc         而后再输入sudo apt-get install g++        最后打开codeblocks写个 helloworld 试试吧。 二:helloworld小程序写完后,也编译通过了
Java中命令行可以编译成功,但不能运行,报找不到或无法加载主类
安装并配置好环境后,然后利用命令行编译和运行Java程序,但javac编译可以成功,但利用java运行的时候会报错,会出现找不到或者无法加载主类的错误。         主要是以下两点要注意,解决这些问题,可以解决报错的问题:  1、在classpath的最前面要加一个本目录路径,用.(英文字符的句号)表示,由于后面还有java的dt 和tools两个路径,所以.后要加;进
程序编译成功,但是运行时不出现运行结果的界面(TC)
例子:以下是一个画彩色圈的程序 #include #include #include main() { int gdriver,gmode,i,j; gdriver=DETECT; initgraph(&gdriver,&gmode,"C:\\BGI");     //多数情况是此处写错了 存放图形驱动文件的路径 ,这个路径一般在TC的安装目录下 setbkcolor(0)
Eclipse不能编译成功
注意:如果该工程有程序在运行,则不能编译成功,这就是我出现的状况 MyEclipse不编译解决1. 确保 project->buildautomatically    已经被选上. MyEclipse不编译解决2. 如果选上了,也不好使, 使用这一招: project->clean..->选第2个clean select project, 勾上start buildimmediatelly
qt在opencv下编译成功,运行不成功的问题解决
qt在opencv下编译成功,运行不成功的问题解决,库文件差异