首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-03-12 
求用c++实现的动态二维数组储存想做一个动态的二维数组,确定行数后,每一行的长度可定义为不同的数。比如一

求用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;
 
}

热点排行