順序表的動態分配


順序表的特點:

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

 參考視頻鏈接:https://www.bilibili.com/video/BV1b7411N798?p=8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM