我正在尝试使用C语言创建大小为3 * 3的网状网络以进行模拟(使用CSIM
)。
X --- X --- X
| | |
X --- X --- X
| | |
X --- X --- X
以下重叠循环应该模拟节点之间的链接,但是并不真正模拟网格拓扑,因为它也计算对角线链接。我为这个问题道歉,但我真的不知道如何修改它来代表一个网状网络。任何提示都表示赞赏。
int net[5][5];
for(i=0; i<5;i++)
{
for(j=0; j<5;j++)
{
net[i][j] = link;
}
}
答案 0 :(得分:0)
由于你在谈论5x5矩阵并且抱怨填充了对角线,我假设你想要一个矩阵,其中条目是节点(你有“X”),链接(你有“ - ” - “或”|“),或者你什么都没有的地方。我不确定是否使用5x5阵列作为3x3网格是一个好主意,但如果你真的想要,你可以做类似以下的事情:
首先创建一个包含3个元素的枚举类型,如下所示:
typedef enum {NODE,LINK,EMPTY} slot;
然后将net
声明为类型slot
的5x5数组,并根据节点和链接或链接和容器是否交替填充2个嵌套循环。以下代码说明了它的工作原理:
#include <stdio.h>
typedef enum {NODE,LINK,EMPTY} slot;
int main(void){
int i,j;
slot net[5][5];
for(i = 0; i < 5; i+=2){
for(j = 0; j < 5; j++){
net[i][j] = j%2 == 0? NODE : LINK;
}
}
for(i = 1; i < 5; i+=2){
for(j = 0; j < 5; j++){
net[i][j] = j%2 == 0? LINK : EMPTY;
}
}
printf("\n");
for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
switch(net[i][j]){
case NODE:
printf("X");
break;
case LINK:
printf("+");
break;
default:
printf(" ");
break;
}
}
printf("\n");
}
return 0;
}
输出:
X+X+X
+ + +
X+X+X
+ + +
X+X+X