问题描述
- 无法解决error C2109: 下标要求数组或指针类型
-
最近在学习数据结构的图……以上是有问题的代码,还没有写完。但是这一段:
和这一段:
各位大神应该是看到了i或者j下面划得红线吧,问题就是出在这里。以下po出完整的代码段,但是还是没有写完。
#include<iostream> using namespace std; #define MVNum 100 #define MaxInt 0 #define Int 1 /*int VerTexType; int ArcType;*/ struct GraphAM { int vexs[MVNum]; int arcs[MVNum]; int vexnum, arcnum; }; void CreateUDN(GraphAM &G) { int i, j, k, v1, v2; //i,j,k用于计数,v1,v2用于储存输入一条边依附的顶点 cout << "请输入……" << endl; cin >> G.vexnum >> G.arcnum; for (i = 0; i < G.vexnum; ++i) cin >> G.vexs[i]; for (i = 0; i < G.vexnum; ++i) for (j = 0; j < G.vexnum; ++j) G.arcs[i][j] = MaxInt; for (k = 0; k < G.arcnum; ++k) { cin >> v1 >> v2; i = v1; j = v2; G.arcs[i][j] = Int; G.arcs[j][i] = G.arcs[i][j]; } } int main() { GraphAM * G; }
可能会看得比较辛苦,十分抱歉&十分感谢
解决方案
1.一维数组改成二维
2.调用之前记得new或者malloc
#include<iostream>
using namespace std;
#define MVNum 100
#define MaxInt 0
#define Int 1
/*int VerTexType;
int ArcType;*/
struct GraphAM
{
int vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum, arcnum;
};
void CreateUDN(GraphAM &G)
{
int i, j, k, v1, v2; //i,j,k用于计数,v1,v2用于储存输入一条边依附的顶点
cout << "请输入……" << endl;
cin >> G.vexnum >> G.arcnum;
for (i = 0; i < G.vexnum; ++i)
cin >> G.vexs[i];
for (i = 0; i < G.vexnum; ++i)
for (j = 0; j < G.vexnum; ++j)
G.arcs[i][j] = MaxInt;
for (k = 0; k < G.arcnum; ++k)
{
cin >> v1 >> v2;
i = v1; j = v2;
G.arcs[i][j] = Int;
G.arcs[j][i] = G.arcs[i][j];
}
}
int main()
{
GraphAM *G = new GraphAM;
CreateUDN(*G);
}
解决方案二:
int arcs[MVNum];
arcs是一维数组,你怎么搞出两个下标?
解决方案三:
int arcs[MVNum] 改成 int arcs[MVNum][MVNum];
解决方案四:
谢谢以上的几位好心的大神,而我对我自己挺无语的……没有发现这样的错误……十分感谢几位!!!
时间: 2025-01-12 05:15:54