1. 程式人生 > >資料結構--線性表--動態陣列

資料結構--線性表--動態陣列

一、C++建立一維陣列 
在C++中建立動態陣列,是用new來實現的

type *p = new type [N]
當然也可以分開來寫
type *p1;
p1 = new type [N];
type是指具體的資料型別, N代表的是一維陣列的列數 
每次使用new後都要釋放
delete[] p1; 
二、C++建立二維陣列 
一般的格式: 
type (*p)[N] = new type [][N]
type是指具體的資料型別, N代表的是二維陣列的列數 
另一種格式:不需要寫列數 
舉例:建立一個5行3列的int型二維陣列

int **p;
p = new int *[5];   //建立一個指標陣列,每個元素都是一個指標
for (int i = 0; i < 5; i++)
{
    p[i] = new int[3];//每一個指標陣列中的元素指標都指向一個3個元素的陣列
}
當然在每次使用完動態陣列後,需要將其釋放

for (int i = 0; i < 5; i++)
{
     delete[] p[i];
}
delete[] p;
建立一個動態的row行col列陣列,並隨機賦值0-9

include "iostream"
include "ctime"
using namespace std;
int main()
{
    int row, col;
    int i, j;
    srand((unsigned)time(NULL));
    cout << "輸入二維陣列的行,列:";
    cin >> row >> col;
    //動態定義二維陣列
    int **p2;
    p2 = new int*[row];
    for (i = 0; i < row; i++)
    {
        p2[i] = new int[col];
    }
    //陣列賦值
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < col; j++)
        {
            p2[i][j] = rand() % 10;
        }
    }
    //輸出陣列
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < col; j++)
        {
            cout << p2[i][j] << '\t';
        }
        cout << endl;
    }
    //釋放二維陣列
    for (i = 0; i < row; i++)
    {
        delete[] p2[i];
    }
    delete[] p2;
}


三、建立三維陣列 

和建立二維陣列一樣,只需要在新增第三個變數就能完成三維陣列的建立。

例項:建立一個動態的高height、行row、列col的三維陣列,並隨機賦值0-9

#include "iostream"
#include "ctime"
using namespace std;

int main()
{
    int hight, row, col;
    int i, j,k;
    srand((unsigned)time(NULL));
    cout << "輸入三維陣列高,行,列 : ";
    cin >> hight >> row >> col;
    //動態定義三維陣列:
    int *** p3;
    p3 = new int**[hight];
    for (i = 0; i < hight; i++)
        p3[i] = new int*[row];
    for (i = 0; i < hight; i++)
        for (j = 0; j < row; j++)
            p3[i][j] = new int[col];
    //輸入三維陣列值:
    for (i = 0; i < hight; i++)
        for (j = 0; j < row; j++)
            for (k = 0; k < col; k++)
                p3[i][j][k] = rand() % 10;
    //輸出三維陣列:
    cout << "輸出三維陣列" << endl;
    for (i = 0; i < hight; i++)
    {
        for (j = 0; j < row; j++)
        {
            for (k = 0; k < col; k++)
                cout << p3[i][j][k] << ' ';
            cout << endl;
        }
        cout << endl;
    }
    //釋放三維陣列
    for (i = 0; i < hight; i++)
        for (j = 0; j < row; j++)
            delete[]p3[i][j];
    for (i = 0; i < hight; i++)
        delete[]p3[i];
    delete[]p3;

}


原文轉載自:http://blog.csdn.net/liuqi605752176/article/details/52678308 特表感謝