1. 程式人生 > 實用技巧 >順序表的動態分配

順序表的動態分配

順序表的特點:

1.隨機訪問,即可以在O(1)時間內找到第i個元素

2.擴充套件容量不方便(即使採用動態分配的方式實現,拓展長度的時間複雜度也比較高)

3.插入、刪除操作不方便,需要移動大量元素

下面為主要程式碼及註釋

#include "stdlib.h"
#define InitSize 10//預設的最大長度
typedef struct{
    int *data;//指示動態分配陣列的指標
    int MaxSize;//順序表的最大容量
    int Length;//
}SeqList;

void InitList(SeqList &L){
    L.data=(int
*)malloc(InitSize*sizeof(int));//用malloc函式申請一片連續的儲存空間 L.Length=0; L.MaxSize=InitSize; } 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.Length;i++){ L.data[i]=p[i];//將資料複製到新區域 } L.MaxSize=L.MaxSize+len;//
順序表最大長度增加len free(p);//釋放原來的記憶體空間 } int main() { SeqList L;//宣告一個順序表 InitList(L);//初始化順序表 //...往順序表隨便插入幾個元素... IncreaseSize(L,5); return 0; }