第一篇文章中用c實(shí)現(xiàn)了靜態(tài)順序表,但是使用靜態(tài)順序表還有不足的地方。當(dāng)我們需要存儲(chǔ)的數(shù)據(jù)很少時(shí),如果靜態(tài)順序表的數(shù)組容量較大就會(huì)造成空間的浪費(fèi);當(dāng)我們需要存儲(chǔ)的數(shù)據(jù)很多時(shí),如果靜態(tài)順序表的數(shù)組容量較小可能就會(huì)造成數(shù)據(jù)丟失。所以一般情況我們應(yīng)該盡量把順序表實(shí)現(xiàn)成動(dòng)態(tài)的。需要多大容量就開辟多大容量。
創(chuàng)新互聯(lián)建站是專業(yè)的青秀網(wǎng)站建設(shè)公司,青秀接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行青秀網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
靜態(tài)順序表和動(dòng)態(tài)順序表只有以下函數(shù)不同:
1.定義結(jié)構(gòu)體時(shí),多定義一個(gè)capacity,并對(duì)capacity進(jìn)行初始化和增加大小的設(shè)置;
#define INIT_CAPACITY 3 #define DEFAULT_INC 3
typedef struct { DataType *Data; int size; int capacity; }SeqList,*pSeqList;
2.動(dòng)態(tài)順序表多了容量檢測函數(shù)(沒有容量時(shí)進(jìn)行動(dòng)態(tài)開辟);
void CheckCapacity(pSeqList pSeq) { assert(pSeq); //當(dāng)存儲(chǔ)的有效值個(gè)數(shù)和容量相等時(shí)進(jìn)行擴(kuò)容 if(pSeq->size == pSeq->capacity) { pSeq->Data = (DataType*)realloc(pSeq->Data,pSeq->capacity + DEFAULT_INC); pSeq->capacity = pSeq->capacity + DEFAULT_INC; } }
3.動(dòng)態(tài)順序表中進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí)先要進(jìn)行容量檢測;
void PushBack(pSeqList pSeq, DataType x) { assert(pSeq); CheckCapacity(pSeq); pSeq->Data[pSeq->size++] = x; } void PushFront(pSeqList pSeq, DataType x) { int i = 0; assert(pSeq); CheckCapacity(pSeq); for(i = pSeq->size; i > 0; i--) { pSeq->Data[i] = pSeq->Data[i-1]; } pSeq->Data[0] = x; pSeq->size++; } void Insert(pSeqList pSeq,int pos,DataType x) { int i = 0; assert(pSeq); assert((pos<pSeq->size) && (pos >= 0)); CheckCapacity(pSeq); for(i = pSeq->size; i>pos; i--) { pSeq->Data[i] = pSeq->Data[i-1]; } pSeq->Data[pos] = x; pSeq->size++; }
文章題目:c實(shí)現(xiàn)的動(dòng)態(tài)順序表
瀏覽路徑:http://jinyejixie.com/article22/ghdccc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)建站、做網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)