前提・実現したいこと
無向グラフの辺集合のデータ構造を隣接行列を用いて表示させるプログラムを作成しました。頂点を1,2,3・・・のように数字で表す。
配列はポインタを使い動的に確保する方法を用いて、プログラム実行時に頂点数を柔軟に指定できるようにした。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題
頂点数はどのくらいまで増やせるのか理論的な限界と、実際に確保できる限界を比較する方法を知りたいです。
また、なるべく多くの頂点数を扱うにはどのようにすればよいのか教えてほしいです。
該当のソースコード
C言語
ソースコード
#include <stdio.h>
#include <stdlib.h>
int graph; / 辺(関連)の有無 /
int n; / 頂点の数 */
#define FALSE 0
#define TRUE 1
void inputgraph(void){ /* グラフデータ読込み */
int i, j;
puts("頂点の数を入力してください");
scanf("%d", &n);
graph = malloc((n*n)*sizeof(int));
for (i = 1; i <= n; i++){
for (j = 1; j <= n; j++){
graph[(i-1)*n+(j-1)] = FALSE;
}
}
puts("各辺の両端点を番号で入力してください");
while (scanf("%d%d", &i, &j) == 2){
graph[(i-1)*n+(j-1)] = TRUE;
graph[(j-1)*n+(i-1)] = TRUE;
}
}
int main(void){
int i, j;
inputgraph(); /* 点の数 n, 辺の有無 graph[]を入力*/
puts("入力データ graph(i,j)=F/T");
for (i = 1; i <= n; i++) {
printf("%3d",i);
for (j = 1; j <= i; j++) {
if (graph[(i-1)*n+(j-1)]){
fputs(" T",stdout);
}
else{
fputs(" F",stdout);
}
}
puts("");
}
fputs(" ",stdout);
for (i = 1; i <= n; i++) printf("%3d",i);
puts("");
return EXIT_SUCCESS;
}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー