線性表初識

2022-01-26 03:15:44 字數 1618 閱讀 3365

線性表是最常用和最簡單的一種結構,它是學好其他資料結構比如棧、佇列的基礎。

先舉個栗子:

幼兒園為了保障小朋友的安全,避免漏掉小朋友,給他們安排了出門的次序,事先規定好,誰在誰的前面,誰在誰的後面。這樣養成習慣後,如果誰沒有到位,他前面和後面的小朋友就會主動報告老師,某人不在。

一、線性表的定義

線性表(list):零個或多個資料元素的有限序列。

示意圖:

1.  這裡有幾個關鍵的地方:

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

2)然後,線性表強調是有限的,小朋友班級人數是有限的,元素個數當然也是有限的。

3)這裡指的是具有相同型別的資料元素。

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時,稱為空表。

二、線性表的抽象資料型別

1.  回到最開始提到的幼兒園小朋友的例子,老師為了讓小朋友有秩序地出入,所以就考慮給他們排乙個隊,並且是長期使用的順序,這個考慮和安排的過程其實就是乙個線性表的建立和初始化過程。

2.  剛開始沒經驗,把小朋友排好隊後,發現有的高有的低,隊伍很難看,於是解散重新排—這是乙個線性表重置為空表的操作。

3.  排好隊後,我們隨時可以叫出隊伍中某一位置的小朋友名字以及他的具體情況—這種可以根據位序得到資料元素也是一種很重要的線性操作。

4.  有時我們想知道,某個小朋友是否是班裡的小朋友—這種查詢某個元素是否存在的操作很常用。

5.  有家長問老師,班裡現在到底有多少個小朋友呀—這種獲得線性表長度的問題也很普遍。

顯然,對於乙個幼兒園來說,有乙個新的小朋友要加入到佇列中,或因某個小朋友生病,需要移除某個位置,都是很正常的情況。對於乙個線性表來說,插入資料和刪除資料都是必須的操作。

1

//線性表的抽象資料型別23

adt 線性表(list)

4data

5線性表的資料物件集合為,每個元素的型別均為datatype。其中,除第

6乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個

7元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係。

8operation

9 initlist(*l): 初始化操作,建立乙個空的線性表l。

10listempty(l): 若線性表為空,返回true,否則返回false。

11 clearlist(*l): 將線性表清空。

12 getelem(l,i,*e):將線性表l中的第i個位置元素值返回給e。

1315 listdelete(*l,i,e): 刪除線性表l中第i個位置元素,並用e返回其值。

16listlength(l): 返回線性表l的元素個數。

17 endadt

初識線性表

線性表是具有相同資料型別的n個元素的有限序列,屬於資料的邏輯結構。邏輯結構最終都是需要通過物理結構來實現的,線性表的邏輯有序性在物理結構有順序表和煉表兩種表示方法。順序表和煉表都屬於資料的物理結構。線性表的順序儲存成為順序表,它用一組連續的儲存單元一次儲存線性表中的資料元素,從而是邏輯上相鄰的兩個元...

5 初識線性表

線性表,從名字上你就能感覺到,是具有像線一樣的性質,像剛才提到的那樣,乙個班級的小朋友,乙個跟著乙個排著隊,有乙個打頭,有乙個收尾,當中的小朋友每乙個都知道他前面乙個是誰,他後面乙個是誰,這樣如同有一根線把他們串聯起來了。就可以稱之為線性表 由n n o 個資料特性相同的元素構成的有限序列稱為線性表...

資料結構之線性表(初識)

定義 線性表是具有相同型別的n n 0 個元素的有限序列,其中n為表長,當n 0時,該錶為空表。若l命名為線性表,則一般表示為l a1,a2,ai,ai 1,an 特點 表中元素個數有限 表中元素具有邏輯上的順序性,在序列中各個元素排序有其先後次序 表中元素是資料元素,每個元素都是單個元素 表中元素...