資料結構之線性表順序儲存

2021-10-03 09:42:47 字數 2412 閱讀 8570

零個或多個資料元素的有限序列。這裡需要強調幾個關鍵的地方

1:首先它是乙個序列。也就是說,元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有乙個前驅和後繼。

2:然後,線性表強調是有限的。

如果用數學語言來進行定義。可如下:

若將線性表標記為(a1,…ai-1,ai,…,ai+1,…an),則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素。當i=1,2,…n-1時候,ai有且僅有乙個直接後繼,當i=2,3,…n時,ai有且僅有乙個直接前驅。如下圖

所以線性表元素的個數n(n>=0)定義為線性表的長度,當n=0時候,稱為空表。

順序儲存定義:指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。線性表(a1,a2,…,an的順序儲存示意圖如下)

順序儲存方式:說白了,就是在記憶體中找了塊地兒,把一定記憶體空間給佔了,然後把相同資料型別的資料元素依次存放在這塊空地中。既然線性表的每個資料元素的型別都相同,所以可以用c語言(其他語言也相同)的一維陣列來實現順序儲存結構,即把第乙個資料元素存到陣列下標為0的位置中,接著把線性表相鄰的元素儲存在陣列中相鄰的位置。

注意2點

1:為了建立乙個線性表,要在記憶體中找一塊地,這塊地的第乙個位置就非常關鍵,它是儲存空間的起始位置。

2:線性表中,我們估算這個線性表的最大儲存容量,建立乙個陣列,陣列的長度就是這個最大儲存容量。

結構**

#define maxsize 20      

/*儲存空間初始分配量*/

typedef

int elemtype;

/* elemtype型別根據實際情況而定,這裡假設為int*/

typedef

struct

sqlist

獲得元素操作

#define ok 1

#define error 0

#define true 1

#define false 0

typedef

int status;

status getelem

(sqlist l,

int i, elemtype *e)

插入操作舉個例子:有一天,你在排隊買東西,然後來了乙個美眉,到你跟前說,小哥哥、小哥哥,我有點急事,我能插個隊麼,你看妹子這麼漂亮,心一軟,就同意了。這個時候,你必須得退後一步,否則他是進不來的。這還沒完,你後面的每個人也得退後一步。罵聲四起,但是後面的人也不知道咋回事,沒什麼辦法。

這個例子其實已經說明了線性表的順序儲存結構,在插入資料時的實現過程,如下圖。

實現**如下

status listinsert

(sqlist *l,

int i, elemtype e)

l->data[i-1]

= e;

/*將新元素插入*/

l->length++

;return ok;

}

刪除操作接著剛才的例子,此時後面的人意見很大,都說怎麼這樣,不管什麼原因,也不能插隊,噼里啪啦一頓罵,最終,美女,頂不住流言蜚語,灰溜溜的走了,於是,排隊的人群又像懦蟲一樣,均向前移動一步,罵聲漸息,隊伍又恢復了平靜。如下圖

實現**如下

status listdelete

(sqlist *l,

int i, elemtype e)

l->length--

;return ok;

}

線性表順序儲存結構優缺點優點1:無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。

2:可以快速的訪問表中任一位置的元素。

缺點1:插入和刪除操作需要移動大量的元素。

2:當線性表長度變化較大時,難以缺點儲存空間的容量。

3:造成儲存空間的碎片。

參考《大話資料結構》一書

資料結構之線性表 順序儲存

從新在學習一遍資料結構,每天盡量都寫點!fuction the list struct by xiaolong date 2012年 03月 13日 星期二 16 50 12 cst 功能 線性表的順序儲存實現 主要功能 include include define max size 20 defi...

資料結構 線性表之順序儲存

第i個元素與第乙個元素的儲存位置滿足 loc ai loc a1 i 1 m include include include include 線性表的順序儲存 define max size 100 定義線性表最大長度 順序儲存的缺陷之一 typedef structdata typedef str...

資料結構之線性表 順序儲存

線性表作為一種最簡單的資料結構,在資料的管理和運用方面有著很大的作用,而這種特殊的資料集合,其自身有著很強的特點 線性表 線性表是n個型別相同的資料元素的有限集合,且n大於0,除第乙個元素無直接前驅,和最後乙個元素沒有直接後繼以外,其餘的每個元素都有乙個直接前驅和乙個直接後繼,而且元素之間具有一對一...