【資料結構】線性表(WD)
阿新 • • 發佈:2021-07-04
目錄
順序表的實現——靜態分配
#include <bits/stdc++.h> #define MaxSize 10 //定義最大長度 using namespace std; typedef struct { int data[MaxSize]; //用靜態陣列存放資料元素 int length; //順序表的當前長度 } SqList; //順序表的當前定義 //初始化順序表 void InitList(SqList &L) { for (int i = 0; i < MaxSize; i++) { L.data[i] = 0; //將所有資料元素設定為預設初始值 } L.length = 0; //順序表初始長度為0 } int main() { SqList L; //宣告一個順序表 InitList(L); //初始化順序表 for (int i = 0; i < MaxSize; i++) { printf("data[%d]=%d\n", i, L.data[i]); } return 0; }
output:
data[0]=0
data[1]=0
data[2]=0
data[3]=0
data[4]=0
data[5]=0
data[6]=0
data[7]=0
data[8]=0
data[9]=0
順序表的實現——動態分配
#include <bits/stdc++.h> #define InitSize 10 //預設的最大長度 using namespace std; typedef struct { int *data; //指示動態分配陣列的指標 int MaxSize; //順序表的最大容量 int length; //順序表的當前長度 } SeqList; //順序表的當前定義 //初始化順序表 void InitList(SeqList &L) { //用malloc函式申請一片連續的儲存空間 L.data = (int *)malloc(InitSize * sizeof(int)); L.MaxSize = InitSize; L.length = 0; } //增加動態陣列的長度 void IncreaseSize(SeqList &L, int len) { int *p = L.data; L.data = (int *)malloc((L.MaxSize + len) * sizeof(int)); // for (int i = 0; i < L.MaxSize; i++) // { // L.data[i] = p[i]; //將資料複製到新區域 // } L.MaxSize = L.MaxSize + len; //更新順序表最大長度 free(p); //釋放原來的記憶體空間 } int main() { SeqList L; //宣告一個順序表 InitList(L); //初始化順序表 cout << L.MaxSize << endl; IncreaseSize(L, 5); cout << L.MaxSize << endl; return 0; }
output:
10
15