線性表的順序存儲(chǔ)結(jié)構(gòu)元素的獲取,插入及刪除-創(chuàng)新互聯(lián)

對(duì)于線性表,我們可以對(duì)其元素進(jìn)行簡單的獲取,插入以及刪除操作。

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)績溪,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

  先來講講元素的獲取操作,完整來講,就是對(duì),將線性表L第i個(gè)位置的元素返回,若成功,則返回1,且將第i個(gè)位置的元素的值賦給*e;若失敗,則返回0。代碼如下:

int GetElem ( SqList L, int i, int *e ){
    
    if ( i < 1 || i > L->length || L->length == 0 )
        return 0;
        
    *e = L->data[i-1];

    return 1;
}

若是在代碼中使用宏定義則是比較好的,因?yàn)榉奖銛?shù)據(jù)的修改,以下代碼是宏定義版:

#define Ok     1
#define ERROR  0
#define TRUE   1
#define FALSE  0

typedef int Status;

Status GetElem ( SqList L, int i, ElemType *e ){
    
    if ( i < 1 || i > L->length || L->length == 0 )
        return ERROR;
        
    *e = L->data[i-1];
    
    return OK;

}

接下來就是對(duì)元素的插入操作。在插入元素之前,我們首先要判斷插入元素的位置是否正確以及線性表的空間是否充足,若是都沒問題,那么可以執(zhí)行插入操作。記住,很重要的一點(diǎn)就是 ,插入一個(gè)元素后,一定要記得對(duì)線性表長度執(zhí)行加1操作。代碼如下:

int ListInsert ( SqList *L, int i, int e ){
    
    int k;
    
    if ( i < 1 || i > L->length + 1 )
        return 0;
    if ( L->length >= MAXSIZE )
        return 0;
    
    if ( i <= L->length )     //若插入數(shù)據(jù)位置不在表尾
        for ( k = L->length - 1; k >= i - 1; --k )
            L->data[k+1] = L->data[k];
        
    L->data[i-1] = e;
    
    L->length++;
    
    return 1;

}

同樣的,再用宏定義的方式寫一遍代碼。代碼如下:

Status ListInsert ( SqList *L, int i, ElemType e ){

    int k;

    if ( i < 1 || i > L->length + 1 )
        return ERROR;
    if ( L->length >= MAXSIZE )
        return ERROR;
        
    if ( i <= L->length )
        for ( k = L->length - 1; k >= i - 1; --k )
            L->data[k+1] = L->data[k];
    
    L->data[i - 1] = e;
    
    L->length++;
    
    return OK;

}

最后,就是對(duì)線性表進(jìn)行元素的刪除操作。刪除相應(yīng)位置的元素,首先就要判斷所要?jiǎng)h除位置是否正確,其次就是對(duì)線性表進(jìn)行判斷,表長是是否為0,若為0,則刪除出錯(cuò),若不為0,則進(jìn)行相應(yīng)的刪除操作。代碼如下:

int ListDelete ( SqList *L, int i, int *e ){

    int k;
    
    if ( i < 1 || i > L->length )
        return 0;
    if ( L->length == 0 )
        return 0;
     
     *e = L->data[i-1];   
    if ( i < L->length )      //如果刪除的不是最后一個(gè)位置(刪除的不是最后一個(gè)元素)
        for ( k = i; k < L->length; ++k )
            L->data[k-1] = L->data[k];
    
    L->length--;
    
    return 1;

}

刪除元素的代碼也用宏定義的方式寫一遍。代碼如下:

Status ListDelete ( SqList *L, int i, ElemType *e ){

    int k;
    
    if ( i < 1 || i > L->length )
        return ERROR;
    if ( L->length == 0 )
        return ERROR:
    
    *e = L->data[i-1];
    if ( i < L->length )
        for ( k = i; k < L->length; ++k )
            L-data[k-1] = L-data[k];
            
    L->length--;
    
    return OK;

}

很重要的一點(diǎn)是,一定要分清什么是元素位置,什么是元素下標(biāo)。第i個(gè)位置的元素,它的下標(biāo)是(i-1)。

  那么順序存儲(chǔ)結(jié)構(gòu)有什么優(yōu)缺點(diǎn)呢?它的優(yōu)點(diǎn)就是,存儲(chǔ)方式簡單,可以快速的存取表中任一位置的元素。而且,無需為其元素之間的邏輯關(guān)系而增加額外的存儲(chǔ)空間。

缺點(diǎn)就是,如果存儲(chǔ)元素過多,那么在執(zhí)行插入以及刪除操作時(shí),需要移動(dòng)大量的元素,這樣非常的浪費(fèi)運(yùn)行時(shí)間。況且,由于不知道元素的具體個(gè)數(shù),所以很難把握數(shù)組的大小,容易造成空間的浪費(fèi)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站欄目:線性表的順序存儲(chǔ)結(jié)構(gòu)元素的獲取,插入及刪除-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://muchs.cn/article34/popse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、定制網(wǎng)站、標(biāo)簽優(yōu)化小程序開發(fā)、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站