線性表是最常用和最簡單的一種結構,它是學好其他資料結構比如棧、佇列的基礎。
先舉個栗子:
幼兒園為了保障小朋友的安全,避免漏掉小朋友,給他們安排了出門的次序,事先規定好,誰在誰的前面,誰在誰的後面。這樣養成習慣後,如果誰沒有到位,他前面和後面的小朋友就會主動報告老師,某人不在。
一、線性表的定義
線性表(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 特點 表中元素個數有限 表中元素具有邏輯上的順序性,在序列中各個元素排序有其先後次序 表中元素是資料元素,每個元素都是單個元素 表中元素...