數據結構和算法-學習筆記3

線性表(List)

定義:由零個或多個數據元素組成的有限序列。

關鍵詞

①序列:它是一個序列,元素之間是有先後順序的

②若元素存在多個:第一個元素無前驅,而後一個元素無後繼,其它元素只有一個前驅和後繼

③有限的

數學語言定義如下

若將線性表記爲(a1,...,ai-1,ai,ai+1,...,an),則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素

wKioL1SOVvGTrQrSAACKl8qv6sc944.jpg

線性變元素的個數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

實例代碼:

wKioL1SOY2CTYwJhAAEgICcSNSA743.jpg

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