求用c++实现的动态二维数组储存
想做一个动态的二维数组,确定行数后,每一行的长度可定义为不同的数。比如一共两行,第一行长度1,第二行长度2,就一共3个存储单位。
原题是:变长度二维数组存储的一般实现。
是数据结构的课,上课时老师说了下,ms是要用线性表,每个线性表的元素仍是一个线性表,
理论上应该是可行的吧?就是不知道怎么实现,编程超菜T_T
[解决办法]
#include <iostream>using std::cin;int main(){ int rows; int columns; cin >> rows; int **pArray = new int*[rows]; for(int i=0; i<rows; i++) { cin >> columns; pArray[i] = new int[columns]; } //... for(int i=0; i<rows; i++) delete [] pArray[i]; delete [] pArray; return 0;}
[解决办法]
#include <iostream>
using namespace std;
int main()
{
int i, j;
int m=3;
int n[3]={1, 2, 3};
//行指针数组
int** array2D=new int*[m];
//每行分配不一样多的空间
for(i=0; i<m; ++i)
{
array2D[i]=new int[n[i]];
}
//测试一下
for(i=0; i<m; ++i)
{
for(j=0; j<n[i]; ++j)
{
array2D[i][j]=j+1;
}
}
for(i=0; i<m; ++i)
{
for(j=0; j<n[i]; ++j)
{
cout<<array2D[i][j]<<"\t";
}
cout<<endl;
}
//删除分配的空间
for(i=0; i<m; ++i)
{
delete[]array2D[i];
}
delete[]array2D;
return 0;
}