求助C2223错误,实在是找不出来怎么错了 谢谢大家了

sunjiya23 2010-08-11 11:16:26
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000

typedef struct node {
int adjvex;
struct node *next;
}EdgeNode;

typedef struct {
EdgeNode *first;
}VertexNode;

typedef struct{
VertexNode adjlist[MAX];
}graph;

void string2ALGraph(char *array, int Vnum, graph **G){
int index,i=0,j=0;
int matrix[MAX][MAX];
char Relation[MAX];
EdgeNode *p;
int RelaLen=strlen(Relation);
while(*array != '\0'){
Relation[i]=*array;
array++;
}
for(index=0;index<RelaLen;index++){
index%Vnum==0?j=0:(i++,j++);
matrix[i][j] = Relation[index];
}
*G = (graph *) malloc(sizeof(graph));
for(i=0;i<Vnum;i++){
*G->adjlist[i].first=NULL;
}
for(i=0;i<Vnum;i++){
for(j=Vnum-1;j>=0;j--){
if(matrix[i][j] != 0){
p = (EdgeNode *) malloc(sizeof(EdgeNode));
p->adjvex=j;
p->next=*G->adjlist[i].first;
*G->adjlist[i].first=p;
}
}
}
}

int Find (graph *G, int NodeA, int NodeB, int MaxPathLength, int visited[], int path[], int d){
int i,node;
EdgeNode *r;
visited[NodeA] = 1;
d++;
path[d]=NodeA;
if(NodeA == NodeB && d <= MaxPathLength){
for(i=0;i<=d;i++){
if(i != d){
printf("%s\t",path[i]);
}
else{
printf("%s\n",path[i]);
}
}
}
r = G->adjlist[NodeA].first;
while(r != NULL){
node = r->adjvex;
if(visited[node] == 0){
Find(G,node,NodeB,MaxPathLength,visited,path,d);
}
r = r->next;
}
visited[NodeA] = 0;
d--;
return 0;
}

void main(int argc, char *argv[]) {
int path[MAX],visited[MAX],NodeA,NodeB,Vnum_i,MaxPathLength_i,i,j,k;
char Vnum[3],MaxPathLength[3];
graph *G;
strcpy(Vnum,argv[2]);
sscanf(Vnum, "%d", &Vnum_i );
strcpy(MaxPathLength,argv[3]);
sscanf(MaxPathLength, "%d", &MaxPathLength_i);
string2ALGraph(argv[1],Vnum_i,&G);
for(i=0;i<Vnum_i;i++){
for(j=i+1;j<Vnum_i;j++){
NodeA=i;
NodeB=j;
for(k=0;k<Vnum_i;k++){
visited[k]=0;
}
Find(G,NodeA,NodeB,MaxPathLength_i,visited,path,-1);
}
}
}
###########################################
编译结果:
--------------------Configuration: PathSearch - Win32 Debug--------------------
Compiling...
PathSearch.c
D:\html\scripts\PHP\PathSearch.c(35) : error C2223: left of '->adjlist' must point to struct/union
D:\html\scripts\PHP\PathSearch.c(42) : error C2223: left of '->adjlist' must point to struct/union
D:\html\scripts\PHP\PathSearch.c(43) : error C2223: left of '->adjlist' must point to struct/union
执行 cl.exe 时出错.

PathSearch.obj - 1 error(s), 0 warning(s)
##############################
...全文
324 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjiya23 2010-08-11
  • 打赏
  • 举报
回复
编译成功,非常感谢jackyjkchen
jackyjkchen 2010-08-11
  • 打赏
  • 举报
回复
运算符优先级问题,少了几个括号


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000

typedef struct node {
int adjvex;
struct node *next;
}EdgeNode;

typedef struct {
EdgeNode *first;
}VertexNode;

typedef struct{
VertexNode adjlist[MAX];
}graph;

void string2ALGraph(char *array, int Vnum, graph **G){
int index,i=0,j=0;
int matrix[MAX][MAX];
char Relation[MAX];
EdgeNode *p;
int RelaLen=strlen(Relation);
while(*array != '\0'){
Relation[i]=*array;
array++;
}
for(index=0;index<RelaLen;index++){
index%Vnum==0?j=0:(i++,j++);
matrix[i][j] = Relation[index];
}
*G = (graph *) malloc(sizeof(graph));
for(i=0;i<Vnum;i++){
(*G)->adjlist[i].first=NULL;
}
for(i=0;i<Vnum;i++){
for(j=Vnum-1;j>=0;j--){
if(matrix[i][j] != 0){
p = (EdgeNode *) malloc(sizeof(EdgeNode));
p->adjvex=j;
p->next=(*G)->adjlist[i].first;
(*G)->adjlist[i].first=p;
}
}
}
}

int Find (graph *G, int NodeA, int NodeB, int MaxPathLength, int visited[], int path[], int d){
int i,node;
EdgeNode *r;
visited[NodeA] = 1;
d++;
path[d]=NodeA;
if(NodeA == NodeB && d <= MaxPathLength){
for(i=0;i<=d;i++){
if(i != d){
printf("%s\t",path[i]);
}
else{
printf("%s\n",path[i]);
}
}
}
r = G->adjlist[NodeA].first;
while(r != NULL){
node = r->adjvex;
if(visited[node] == 0){
Find(G,node,NodeB,MaxPathLength,visited,path,d);
}
r = r->next;
}
visited[NodeA] = 0;
d--;
return 0;
}

void main(int argc, char *argv[]) {
int path[MAX],visited[MAX],NodeA,NodeB,Vnum_i,MaxPathLength_i,i,j,k;
char Vnum[3],MaxPathLength[3];
graph *G;
strcpy(Vnum,argv[2]);
sscanf(Vnum, "%d", &Vnum_i );
strcpy(MaxPathLength,argv[3]);
sscanf(MaxPathLength, "%d", &MaxPathLength_i);
string2ALGraph(argv[1],Vnum_i,&G);
for(i=0;i<Vnum_i;i++){
for(j=i+1;j<Vnum_i;j++){
NodeA=i;
NodeB=j;
for(k=0;k<Vnum_i;k++){
visited[k]=0;
}
Find(G,NodeA,NodeB,MaxPathLength_i,visited,path,-1);
}
}
}
Csuxiaowu 2010-08-11
  • 打赏
  • 举报
回复
它的左边要是一个结构体/联合体

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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