從最簡單的線性表開始講起
在計算機中,資料並不是孤立的,而是具有一定內在聯絡的資料集合,這種聯絡就是資料結構,說明資料如何被組織在一起的。下面我們從最簡單的線性表開始講起。
線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。因此,線性表這種資料結構在實際應用中是廣泛採用的一種資料結構。
線性表——list,零個或多個資料元素的有限序列。
首先它是乙個序列。也就是說,元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有且只有乙個前驅和後繼。
當線性表元素的個數n(n>=0)定義為線性表的長度時,如果n=0,則說明該線性表是個空表。
線性表的抽象資料型別(adt)定義
線性表的抽象資料型別定義如下:
01
adt 線性表(list)
02
data
03
線性表的資料物件集合為,每個元素的型別均為datatype.其中,除第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,除了最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係.
04
operation
05
initlist(*l):初始化操作,建立乙個空的線性表
06
listempty(l):若線性表為空,返回
true
,否則返回
false
.
07
clearlist(*l):將線性表清空.
08
getelem(l,i,*e):將線性表l中的第i個位置元素值返回給e
09
10
11
listdelete(*l,i,*e):刪除線性表l中第i個位置元素,並用e返回其值.
12
listlength(l):返回線性表l的元素個數.
13
endadt
對於不同的應用,線性表的基本操作是不同的,但是上述操作是最基本的,對於實際問題中涉及的關於線性表的更複雜的操作,完全可以用這些基本操作的組合來實現。
舉個例子,假設la表示集合a,lb表示集合b,現在要得到乙個集合a使得a=aub:
01
void
unionl(sqlist *la,sqlist lb)
02
13
}
這裡,union的操作用到了listlength,getelem,locateelem,listinsert等基本方法。
線性表的定義
線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。線性表的順序儲存結構的**如下:
1
#define maxsize 20 /* 儲存空間初始分配量 */
2
typedef
int
elemtype;
/* elemtype型別根據實際情況而定,這裡假設為int */
3
typedef
struct
4
sqlist;
這裡,我們發現描述順序儲存結構需要三個屬性:
儲存空間的起始位置——陣列data,它的儲存位置就是儲存空間的儲存位置。
線性表的最大儲存容量——陣列長度maxsize
線性表的當前長度length
注意:線性表的長度應該小於等於陣列的長度。
下面的程式定義線性表並初始化一些隨機數:
view source
print?
01
#include
02
#include
03
#include
04
05
#define maxsize 20 /* 儲存空間初始分配量 */
06
typedef
int
elemtype;
/* elemtype型別根據實際情況而定,這裡假設為int */
07
typedef
struct
08
sqlist;
12
13
//順序表的初始化
14
sqlist init()
15
20
21
//順序表的建立
22
sqlist create(sqlist l)
23
31
return
l;
32
}
33
34
int
main()
35
45
}
線性結構之線性表
線性結構的特點 存在唯一的乙個被稱做 第乙個 的資料元素 存在唯一的乙個被稱做 最後乙個 的資料元素 除第乙個之外,集合中的每個資料元素均只有乙個前驅 除最後乙個之外,集合中每個資料元素均只有乙個後繼 線性表 乙個線性表是n個資料元素的有限序列。線性表再物理結構的表示上可以分為 1 順序表示和 2 ...
mysql 線性表 資料結構之線性表
概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...
mysql 線性表 資料結構 線性表之順序線性表
public class sequencelist else stringbuilder sb new stringbuilder for int i 0 i size i int len sb.length public class sequencelisttest public static v...