常用數據結構之線性表

線性表(linear list)數據結構的一種,一個線性表是n個具有相同特性的數據元素的有限序列。

線性表中數據元素之間的關係是一對一的關係,即除了第一個和最後一個數據元素之外,其它數據元素都是首尾相接的。就像小學生排隊過馬路一樣,彼此手拉手,每份數據的前面和後面各有一份數據,從整體上看連成了“一條線”。

線性表中的個數n定義爲線性表的長度,n=0時稱爲空表。在非空表中每個數據元素都有一個確定的位置,如用ai表示數據元素,則i稱爲數據元素ai在線性表中的位序。

線性表的相鄰元素之間存在着序偶關係。如用(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有且僅有一個直接前驅 。

特徵

1.集合中必存在唯一的一個“第一元素”。

2.集合中必存在唯一的一個 “最後元素” 。

3.除最後一個元素之外,均有唯一的後繼(後件)。

4.除第一個元素之外,均有唯一的前驅(前件)。

存儲結構

線性表主要由順序表示或鏈式表示。

順序存儲:順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱爲線性表的順序存儲結構或順序映像(sequential mapping)。它以“物理位置相鄰”來表示線性表中數據元素間的邏輯關係。

鏈式存儲:鏈式表示指的是用一組任意的存儲單元存儲線性表中的數據元素,稱爲線性表的鏈式存儲結構。它的存儲單元可以是連續的,也可以是不連續的。在表示數據元素之間的邏輯關係時,除了存儲其本身的信息之外,還需存儲一個指示其直接後繼的信息(即直接後繼的存儲位置),這兩部分信息組成數據元素的存儲映像,稱爲結點(node)。它包括兩個域;存儲數據元素信息的域稱爲數據域;存儲直接後繼存儲位置的域稱爲指針域。指針域中存儲的信息稱爲指針或鏈。

基本操作

線性表應該有一些什麼操作?

clear():將一個已經存在的線性表置爲空表。

isEmpty():判斷線性表是否爲空,若爲空,則返回true;否則,返回爲false。

length():求線性表中的數據元素的個數並返回其值。

get(i):讀取並返回線性表中的第i個數據元素的值。其中i的取值範圍爲0≤i≤length()-1。

insert(i,x):在線性表的第i個數據元素之前插入一個值爲x的數據元素。其中i的取值範圍爲0≤i≤length()。當i=0時,在表頭插入x;當i=length()時,在表尾插入x。

remove(i):刪除並返回線性表中第i個數據元素。其中i的取值範圍爲0≤i≤length()-1。

indexOf(x):返回線性表中首次出現的指定的數據元素的位序號,若線性表中不包含此數據元素,則返回-1。

比如java中的List接口:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章