一、線性表的定義和基本操作
1、定義:線性表是具有相同數據類型的n個數據元素的有限序列。該序列中所含元素的個數叫作線性表的長度,用n表示。當n=0時線性表是一個空表。
(1)線性表一般表示 : L = (a1 , a2 , a3 , ......,an)
其中,a1是唯一的“第一個”數據元素,又稱表頭元素;an是唯一的“最後一個”數據元素,又稱表尾元素。除第一個元素外每一個元素都有且僅有一個直接前驅元素。除最後一個元素外每一個元素都有且只有一個直接後繼元素。
2、線性表的特點
- 表中元素個數有限。
- 表中元素具有邏輯上的順序性,在序列中各元素排序有先後次序。
- 表中的元素都是數據元素,每一個元素都是單個的元素。
- 表中數據元素類型都相同,每個元素佔有相同大小的存儲空間。
- 表中元素具有抽象性,即僅討論元素間的邏輯關係,不討論元素究竟表示什麼。
線性表是一種邏輯結構,表示元素之間一對一的相鄰關係。順序表和鏈表是指存儲結構,兩者屬於不同層面。
3、線性表的基本操作
一個數據結構的基本操作是指其最核心最基本的操作。
- InitList(&L) :初始化表,構造一個空的線性表。
- Length(L): 求表長。返回線性表的長度,即 L 中數據元素的個數。
- LocateElem(L , e) : 按值查找。在表L 中查找具有個頂關鍵字值得元素。
- GetElem(L , i) : 按位查找。獲取表L 中第 i 個位置的元素的值。
- ListInsert(&L , i , e) : 插入操作。在表L 第 i 個位置 插入元素 e。
- ListDelete(&L , i , &e) ; 刪除表L 中第 i 個位置的元素,並用 e 返回其值。
- PrintList(L) : 輸出操作。按前後順序輸出 L 中的所有元素。
- Empty(L) : 判空操作。若表 L 爲空表,則返回 true ,否則返回 false 。
- DistoryList(&L) : 銷燬操作。銷燬線性表L ,並釋放 L 所佔用的內存空間。
二 、線性表的存儲結構
線性表的存儲結構有順序結構和鏈式存儲結構,前者稱爲順序表後者稱爲鏈表。
1、順序表
順序表就是把線性表中的所有元素按照其邏輯順序,依次存儲到從制定存儲位置開始的一塊連續的存儲空間中。線性表中第一個元素的存儲位置就是指定的存儲位置。
2、鏈表
在鏈表存儲中,每個節點不僅包含所存儲的元素信息,還包含元素之間邏輯關係的信息。如單鏈表前驅節點包含後繼結點的地址信息,這樣就可以通過前驅節點中的地址信息找到後繼節點的位置。