從資料的邏輯結構來分,資料元素之間存在的關聯關係被稱為資料的邏輯結構。歸納起來,應用程式中的資料大致有如下四種基本的邏輯結構:
1、集合:資料元素之間“同屬於一個集合”的關係
2、線性結構:資料元素之間存在一個對一個的關係。
3、樹形結構:資料元素之間存在一個對多個的關係。
4、圖狀或網狀結構:資料元素之間存在多個對多個的關係。
對於常用的資料結構,可以將其簡單地分為線性結構和非線性結構。其中線性結構主要是線性表,非線性結構則主要是樹和圖。本次討論線性表。
線性表(Linear List)是由 n(n >= 0)個資料元素(節點)a1a2a3a4……an組成的有序序列。
線性表中的每個元素必須具有相同的結構(即擁有相同的資料項目)。線性表是線性結構中最簡單也是最常用的一種資料結構。很多人容易把線性表的資料元素理解成簡單的資料項目,其實不然。如下圖所示就是一個線性表。
| 員工編號 |
姓名 |
年齡 |
學曆 |
| 0001 |
孫悟空 |
500 |
專科 |
| 0002 |
豬八戒 |
400 |
本科 |
| 0003 |
沙和尚 |
300 |
本科 |
| 0004 |
唐三藏 |
40 |
碩士 |
| …… |
…… |
…… |
…… |
對於上表的資料而言,它本質上依然是線性表,只是他的每個資料元素都是一個“符合”的對象,每個資料元素包括四個資料項目(也被稱為Field):員工編號,姓名,年齡,學曆。
關於線性表還可以有如下定義:
1、線性表中包含的資料元素個數 n 被稱為表的長度,當線性表的長度為 0 時該表也被稱為空白表。
2、當 n > 0 時,表可以表示為:(a1,a2,a3,a4,a5,……an)
對於一個非空的、有限的線性表而言,它總具有如下基本特徵:
(1)、總存在唯一的“第一個”資料元素。
(2)、總存在唯一的“最後一個”資料元素。
(3)、除第一個資料元素外,集合中的每一個資料元素都只有一個前驅的資料元素。
(4)、除最後一個資料元素外,集合中的每一個資料元素都只有一個後繼的資料元素。
(關於前驅和後繼的概念可以去查查有關有向圖中拓撲排序的書籍)。
如果要實現一個線性表,程式首先需要確定該線性表的每個資料元素。接下來,應該為該線性表實現如下操作:
(1)、初始化:通常是一個構造器,用於建立一個空的線性表。
(2)、返回線性表的長度:該方法用於返回線性表中資料元素的個數。
(3)、擷取指定索引處的元素:根據索引返回線性表中的資料元素。
(4)、按值尋找資料元素的位置:如果線性表中存在一個或多個與尋找值相等的資料元素,那麼該方法返回第一個搜尋到的值相等的資料元素的索引,如果沒有則返回 -1。
(5)、直接插入資料元素:向線性表的頭部插入一個資料元素,線性表的長度 +1、
(6)、向指定位置插入元素:向線性表的指定索引處插入一個資料元素,線性表的長度 +1、
(7)、直接刪除資料元素:刪除線性表頭部的資料元素,線性表的長度 -1.
(8)、刪除線性表中指定索引處的資料元素:刪除線性表中指定索引處的資料元素,線性表的長度-1.
(9)、判斷線性表是否為空白:該方法判斷線性表是否為空白,如果線性表為空白,則返回 true,如果不為空白,則返回 false。
(10)、清空線性表:將線性表清空。