能否将上述代码改为能自定义图的数组
时间: 2023-11-27 08:55:43 浏览: 46
当然可以,可以将代码中的二维数组改为一个动态分配的二维指针数组,然后在程序运行时根据需要动态分配内存。以下是示例代码:
```C++
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int n, m;
cout << "请输入图的行数和列数:" << endl;
cin >> n >> m;
// 动态分配二维指针数组
int** graph = new int*[n];
for (int i = 0; i < n; i++)
{
graph[i] = new int[m];
}
// 输入图的数据
cout << "请输入图的数据:" << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> graph[i][j];
}
}
// 输出图的数据
cout << "图的数据为:" << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cout << graph[i][j] << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < n; i++)
{
delete[] graph[i];
}
delete[] graph;
return 0;
}
```
在上述代码中,我们使用了 `new` 运算符动态分配了一个二维指针数组 `graph`,然后根据输入的行数和列数依次为每个行指针分配内存。输入和输出图的数据的部分与之前的代码相同,只是使用了动态分配的二维指针数组。最后在程序结束时,需要依次释放每个行指针占用的内存,以及数组本身占用的内存。
阅读全文