1. 程式人生 > >【資料結構和演算法】6 線性表1

【資料結構和演算法】6 線性表1

線性表的定義

線性表像是排隊一樣,具有像線一樣的性質。

官方定義:線性表(List),是有零個或多個數據元素組成的有限序列;

關於線性表幾個關鍵的地方:

(1)首先它是一個序列,也就是說,元素之間是有個先來後到的順序;

(2)若元素存在多個,則第一個元素無前驅,而最後一個元素無後繼,且其他元素都是有且有一個前驅和後繼;

(3)線性表強調是有限的,事實上,無論計算機強大到什麼地步,它處理的元素都是有限的!

用數學語言定義:

若將線性表記為(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語言中,按照取值的不同,資料型別可以分為兩類:

  原子型別:不可以再分解的基本型別,例如整型、浮點型、字元型等。

  結構型別:由若干個型別組合而成,是可以再分解的,例如整型陣列是由若干整型資料組成的

抽象:是指抽取出事物具有的最普遍的本質。它要求抽出問題的特徵而忽略非本質的細節,是對具體事物的一個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節。

抽象資料型別:(Abstract Data Type,ADT)是指一個數學模型及定義在該模型上的一組操作。對已有的資料型別進行抽象,就有了抽象資料型別。

抽象資料型別的定義僅取決於它的一組邏輯特性,而與其在計算機內部如何表示和實現無關。比如嗎,1+1 = 2這樣一個操作,在不同的CPU的處理可能不一樣,但是由於其定義的資料特性一樣,所以對於計算機程式設計者而言,它們都是相同的。

舉個例子

例如一個3D遊戲中,要定位角色的位置,那麼總會出現x,y,z三個整型資料組合在一起的座標。我們就可以定義一個point的抽象資料型別,它擁有x,y,z三個整型變數,這樣我們就可以方便的對一個角色的位置進行操作。

為了方便對抽象資料型別進行規範的描述,給出抽象資料型別的標準格式:

ADT 抽象資料型別名
Data
資料元素之間邏輯關係的定義
Operation
操作
endADT

★finished by songpl 2018.11.24