读书人

求用c++实现的动态二维数组储存解决办

发布时间: 2012-03-12 12:45:33 作者: rapoo

求用c++实现的动态二维数组储存
想做一个动态的二维数组,确定行数后,每一行的长度可定义为不同的数。比如一共两行,第一行长度1,第二行长度2,就一共3个存储单位。

原题是:变长度二维数组存储的一般实现。
是数据结构的课,上课时老师说了下,ms是要用线性表,每个线性表的元素仍是一个线性表,
理论上应该是可行的吧?就是不知道怎么实现,编程超菜T_T


[解决办法]

C/C++ code
#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;

}

读书人网 >软件架构设计

热点推荐