目錄
創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元陜州做網(wǎng)站,已為上家服務(wù),為陜州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220什么是順序表,它的定義和特點(diǎn)有哪些。
如何實(shí)現(xiàn)順序表的插入操作。
定義一個(gè)順序表
定義insert函數(shù)
???? 判斷順序表是否已滿
?????插入位置的有效性
?????開始插入操作
主函數(shù)實(shí)現(xiàn)功能舉例:
?????為SequenceList L賦值
?????打印順序表
?????調(diào)用insert函數(shù)傳參實(shí)現(xiàn)插入操作
?????打印插入后的順序表
完整代碼如下:
補(bǔ)充注意事項(xiàng)
錯(cuò)誤寫法:
順序表是一種線性數(shù)據(jù)結(jié)構(gòu),它由一組有序的數(shù)據(jù)元素組成。順序表中的數(shù)據(jù)元素是按照一定順序存儲(chǔ)的,并且可以通過數(shù)據(jù)元素的位置來(lái)訪問它們。
順序表有以下幾個(gè)特點(diǎn):
順序表的查找效率高,可以通過數(shù)組下標(biāo)直接訪問順序表中的任意一個(gè)數(shù)據(jù)元素。
順序表的插入和刪除效率較低,因?yàn)檫@些操作需要移動(dòng)大量的數(shù)據(jù)元素。
順序表的空間利用率較低,因?yàn)轫樞虮淼拇笮∈枪潭ǖ模绻臻g不夠用,就需要重新分配一塊新的內(nèi)存空間,將數(shù)據(jù)復(fù)制過去,這樣就會(huì)浪費(fèi)一些空間。
順序表的內(nèi)存空間是連續(xù)的,這樣可以提高緩存命中率,從而提高訪問效率。
總之,順序表是一種簡(jiǎn)單且常用的線性數(shù)據(jù)結(jié)構(gòu),它的查找效率高,但是插入和刪除效率較低,空間利用率較低。
如何實(shí)現(xiàn)順序表的插入操作。 ????????定義一個(gè)順序表typedef struct {
int data[MAX_SIZE];
int length;
}SequenceList;
上述代碼中的typedef
聲明了一個(gè)類型別名SequenceList
,用來(lái)表示一個(gè)結(jié)構(gòu)體類型。這個(gè)結(jié)構(gòu)體類型包含兩個(gè)成員:一個(gè)整型數(shù)組data
和一個(gè)整型變量length
。
這樣使用typedef
聲明后,就可以像使用系統(tǒng)定義的類型一樣使用SequenceList
類型,而不用再使用struct
關(guān)鍵字。例如,可以直接聲明一個(gè)SequenceList
類型的變量,使用typedef
聲明類型別名的主要目的是為了使代碼更加簡(jiǎn)潔,方便維護(hù)。
if (L->length == MAX_SIZE){
printf("Error: the SequenceList if full.\n");
return;
}
?????插入位置的有效性if(index< 0 || index >L->length){
printf("Error index");
return;
}
?????開始插入操作for (int i = L->length - 1; i >= index; i--){
L->data[i+1] = L->data[i];
}
L->data[index] = element;
L->length++;
將順序表中插入位置及之后的數(shù)據(jù)元素向后移動(dòng)一個(gè)位置,從而騰出插入位置。然后,將新的數(shù)據(jù)元素插入到插入位置,并將順序表的長(zhǎng)度加 1。這樣,就完成了順序表的插入操作。當(dāng)i == index時(shí),需要將index下標(biāo)位置的元素向后移一位,這就是要寫等于的原因.
主函數(shù)實(shí)現(xiàn)功能舉例: ????????????????為SequenceList L賦值SequenceList L = {{1,2,3,4,5,6},6};
有六個(gè)元素{1,2,3,4,5,6},length=6
?????打印順序表printf("Original sequence list length: %d and element: ",L.length);
for (int i = 0; i< L.length; i++){
printf("%d ", L.data[i]);
}
?????調(diào)用insert函數(shù)傳參實(shí)現(xiàn)插入操作insert(&L,3,7);
在下表為3的位置上插入元素7
?????打印插入后的順序表printf("After insertion sequence list length: %d and element: ",L.length);
for (int i = 0; i
完整代碼如下:#include#include#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
}SequenceList;
void insert(SequenceList *L,int index,int element){
if (L->length == MAX_SIZE){
printf("Error: the SequenceList if full.\n");
return;
}
if(index< 0 || index >L->length){
printf("Error index");
return;
}
for (int i = L->length - 1; i >= index; i--){
L->data[i+1] = L->data[i];
}
L->data[index] = element;
L->length++;
}
int main(){
SequenceList L = {{1,2,3,4,5,6},6};
printf("Original sequence list length: %d and element: ",L.length);
for (int i = 0; i< L.length; i++){
printf("%d ", L.data[i]);
}
printf("\n");
insert(&L,3,7);
printf("After insertion sequence list length: %d and element: ",L.length);
for (int i = 0; i
補(bǔ)充注意事項(xiàng)在主函數(shù)中,L是一個(gè)結(jié)構(gòu)體變量,不是指針。在訪問它的成員時(shí)不能使用->
運(yùn)算符,會(huì)導(dǎo)致編譯器報(bào)錯(cuò)。
int main(){
sqlist L = {{1,2,3,4,5,6},6};
printf("before insert length = %d,element:",L->length);
for (int i = 0; i< L->length; i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
insert(&L,3,5);
printf("after insert length = %d,element:",L->length);
for (int i = 0; i< L->length; i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
system("pause");
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文題目:順序表的插入操作-創(chuàng)新互聯(lián)
當(dāng)前URL:http://vcdvsql.cn/article34/hchpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、微信公眾號(hào)、品牌網(wǎng)站制作、外貿(mào)建站、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容