線性表的概念
文字定義
一個線性表是 n 個數據元素的有限序列。
這裏需要強調的是:
有限:數據元素的個數取值一定是有限的,n 的取值一定是 0(0表示空的線性表)、1、2、3、5、10 等有限的個數。
有序:在滿足數據元素的個數有限,數據元素之間的關係要滿足有序的關係,所謂有序就是數據元素之間按照先後有順序。
形式定義
(a1 , a2 , a3 ………… ai-1 , ai , ai+1 , …………an)
省略號只是表示省略,並不是表示中間元素下標是無窮限制的,中間的元素下標一定是有限的個數。
上面的形式定義,這裏的數據元素ai (1<=i<=n) 只是一個抽象的符號,其代表的具體含義在不同的情況下可以不同。
強調:也就是說數據元素的類型是沒有限制的,根據具體的情況而定,但是要求所有的數據元素都是同一種類型(或者說性質相同)。
舉例說明:
①:26個英文字母組成的字母表: (A , B , C ,… Z )
上面的數據元素都是字符類型,也就是性質相同。
②:學生成績表:90,97,78,75…,84
上面的數據元素都是整型,也就是性質相同。
我們所見到的線性表只要滿足 n 個數據元素形成的有限序列即可,數據元素的類型是沒有限制的,或者說是各式各樣的。
那麼我們的線性表元素也可以複雜一點?
一個數據元素可以由若干個數據項組成,這時,也可以稱數據元素爲記錄,含有大量記錄的線性表又稱爲 " 文件 "。
例如:
上面的形式能不能叫一個線性表呢?
我們可以看到,每一橫行數據元素的類型是一樣的,如果按照上面的姓名有先後順序,那麼就滿足有序,上面的形式就可以是一個線性表。
那麼很多讀者有數據庫的知識,上面的形式和數據庫裏面的表格非常像。
我們對於上面的表格形式形成的線性表進行總結:
數據元素(結點、記錄) 由5和數據項(字段、域)組成。
把上面形式表格形成的線性表我們可以稱爲文件。
線性表中的數據元素可以是各種各樣的,但同一線性表中的元素必定具有相同特性(屬於同一數據對象或者說是同一種類型)。
線性表中的數據元素之間存在着序偶關係 <ai–1, ai> ,也就是相鄰元素之間有先後順序。
線性表是最常見最簡單的一種數據結構。
上面圖中的圈表示結點或者數據元素,相鄰數據元素之間的連線表示它們之間的關係。
線性表的特點:4個唯一
對於數據元素的非空有限序列來說:
存在唯一的一個被稱作“第一個”的數據元素;
存在唯一的一個被稱作“最後一個”的數據元素;
除第一個之外的數據元素均只有一個前驅;
除最後一個之外的數據元素均只有一個後繼。
上面特點中有唯一的第一個和最後一個,所以數據元素的個數一定是確定的,這也體現了線性表定義的有限特點。
後面兩個特點關於數據元素前驅和後繼的說明體現了線性表定義的有序特點。
舉例說明線性表的特點:
線性表的ADT定義
定義階段和具體的實現無關。
ADT List {
數據對象:D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 }
數據關係:R1={ <ai-1 ,ai >|ai-1 ,ai∈D, i=2,...,n }
基本操作:
結構初始化操作
結構銷燬操作
引用型操作
加工型操作
} ADT List