亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

線性表的順序存儲結構元素的獲取,插入及刪除

發布時間:2020-09-01 02:03:02 來源:網絡 閱讀:741 作者:BarnabyRoss 欄目:編程語言

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

  先來講講元素的獲取操作,完整來講,就是對,將線性表L第i個位置的元素返回,若成功,則返回1,且將第i個位置的元素的值賦給*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;
}

若是在代碼中使用宏定義則是比較好的,因為方便數據的修改,以下代碼是宏定義版:

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

}

接下來就是對元素的插入操作。在插入元素之前,我們首先要判斷插入元素的位置是否正確以及線性表的空間是否充足,若是都沒問題,那么可以執行插入操作。記住,很重要的一點就是 ,插入一個元素后,一定要記得對線性表長度執行加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 )     //若插入數據位置不在表尾
        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;

}

最后,就是對線性表進行元素的刪除操作。刪除相應位置的元素,首先就要判斷所要刪除位置是否正確,其次就是對線性表進行判斷,表長是是否為0,若為0,則刪除出錯,若不為0,則進行相應的刪除操作。代碼如下:

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 )      //如果刪除的不是最后一個位置(刪除的不是最后一個元素)
        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;

}

很重要的一點是,一定要分清什么是元素位置,什么是元素下標。第i個位置的元素,它的下標是(i-1)。

  那么順序存儲結構有什么優缺點呢?它的優點就是,存儲方式簡單,可以快速的存取表中任一位置的元素。而且,無需為其元素之間的邏輯關系而增加額外的存儲空間。

缺點就是,如果存儲元素過多,那么在執行插入以及刪除操作時,需要移動大量的元素,這樣非常的浪費運行時間。況且,由于不知道元素的具體個數,所以很難把握數組的大小,容易造成空間的浪費。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

克什克腾旗| 浮梁县| 兴安县| 宁城县| 沭阳县| 乡城县| 南江县| 万全县| 临泉县| 新丰县| 贞丰县| 博野县| 饶河县| 远安县| 布拖县| 长顺县| 广宁县| 老河口市| 汨罗市| 宜春市| 周口市| 安徽省| 修武县| 龙泉市| 临夏市| 德昌县| 闵行区| 微博| 荔浦县| 高碑店市| 涿州市| 潮州市| 云霄县| 江川县| 靖宇县| 云浮市| 开鲁县| 鄂托克前旗| 八宿县| 台南县| 和平区|