線性表(List)
定義:由零個或多個數據元素組成的有限序列。
關鍵詞
①序列:它是一個序列,元素之間是有先後順序的
②若元素存在多個:第一個元素無前驅,而後一個元素無後繼,其它元素只有一個前驅和後繼
③有限的
數學語言定義如下
若將線性表記爲(a1,...,ai-1,ai,ai+1,...,an),則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素
線性變元素的個數N(n>=0)定義爲線性表的長度,當n=0是,稱爲空表。
抽象數據類型
數據類型的定義:是指一組性質相同的值得集合及定義在此集合上的一些操作的總稱(如整型,浮點型等)
C語言中數據類型可以分爲兩類
原子類型:不可以再分解的基本類型,如整型、浮點型、字符型等。
結構類型:由若干個類型組合而成,是可以再分解的,如整型數組
抽象:是指抽取出事務具有的普遍性的本質。它要求抽出問題的特徵而忽略非本質的細節,是對事物的一個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節。
我們對已有數據類型進行抽象,就有了抽象數據類型
抽象數據類型(ADT)是指一個數學模型及定義在該模型上一組操作
意義:在於數據類型的數學抽象特性
抽象數據類型的標準格式(僞代碼):
ADT 抽象數據類型
Data
數據元素之間邏輯關係的定義
Operation
操作
endADT
線性表的抽象數據類型定義:
ADT線性表(List)
Data:
線性表的數據對象集合爲{a1,a2,...,an},每個元素的類型均爲DataType。其中,除第一個a1外,以外的每一個元素有且只有一個直接前驅元素,除了最後一個元素an外,每一個元素有且只有一個後繼元素,數據元素之間是一對一的關係
Operation:以下幾種操作
InitList(*L):初始化操作,建立一個空的線性表L
ListEmpty(L):判斷線性表是否爲空表,若線性表爲空,返回true,否則返回false
ClearList(*L):將線性表清空
GetElem(L,i,*e):將線性表L中的第i個位置元素值返回給e
LocateElem(L,e):在線性表L中查找與給定值e相等的元素,如果查找成功,返回改元素在表中序號表示成功;否則,返回0表示失敗。
ListInsert(*L,i,e):在線性表L中第i個位置插入新元素e
ListDelete(*L,i,e):刪除線性表L中第i個位置元素,並用e返回其值
ListLength(L):返回線性表L的元素個數
endADT
例如:實現A=A∪B
我們需要用的基本操作組合
ListLength(L)--返回元素個數
GetElem(L,i,*e)--將線性表L中的第i個位置元素值返回給e
LocataElem(L,e)--在線性表L中查找與給定值e相等的元素,如果查找成功,返回改元素在表中序號表示成功;否則,返回0表示失敗。
ListInsert(*L,i,e)--在線性表L中第i個位置插入新元素e
實例代碼: