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

先來講講元素的獲取操作,完整來講,就是對,將線性表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;
}若是在代碼中使用宏定義則是比較好的,因為方便數(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;
}接下來就是對元素的插入操作。在插入元素之前,我們首先要判斷插入元素的位置是否正確以及線性表的空間是否充足,若是都沒問題,那么可以執(zhí)行插入操作。記住,很重要的一點就是 ,插入一個元素后,一定要記得對線性表長度執(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;
}最后,就是對線性表進行元素的刪除操作。刪除相應(yīng)位置的元素,首先就要判斷所要刪除位置是否正確,其次就是對線性表進行判斷,表長是是否為0,若為0,則刪除出錯,若不為0,則進行相應(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 ) //如果刪除的不是最后一個位置(刪除的不是最后一個元素)
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)。
那么順序存儲結(jié)構(gòu)有什么優(yōu)缺點呢?它的優(yōu)點就是,存儲方式簡單,可以快速的存取表中任一位置的元素。而且,無需為其元素之間的邏輯關(guān)系而增加額外的存儲空間。
缺點就是,如果存儲元素過多,那么在執(zhí)行插入以及刪除操作時,需要移動大量的元素,這樣非常的浪費運行時間。況且,由于不知道元素的具體個數(shù),所以很難把握數(shù)組的大小,容易造成空間的浪費。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站欄目:線性表的順序存儲結(jié)構(gòu)元素的獲取,插入及刪除-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.chinadenli.net/article34/popse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站、定制網(wǎng)站、標簽優(yōu)化、小程序開發(fā)、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容