91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

發布時間: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

康定县| 宿迁市| 星子县| 和静县| 高唐县| 黔江区| 会泽县| 旅游| 安仁县| 漳浦县| 延川县| 慈利县| 花莲县| 光泽县| 晋宁县| 西城区| 驻马店市| 天祝| 德庆县| 亚东县| 德钦县| 盐池县| 于田县| 易门县| 神木县| 榆林市| 罗城| 泾川县| 固原市| 临泽县| 五指山市| 海伦市| 亚东县| 天长市| 南郑县| 无为县| 聂荣县| 广东省| 涞水县| 嘉鱼县| 梁平县|