線性表(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時,稱為空表。
例如:
請問公司的組織架構是否屬於線性關係?
分析:一般公司的總經理管理幾個總監,每個總監管理幾個經理,每個經理都有各自的下屬和員工。
那這樣的組織架構是不是線性關係呢?
當然不是啦!注意線性關係的條件是如果存在多個元素,則「第乙個元素無前驅,而最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼。」
資料型別:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
例如很多程式語言的整型,浮點型,字元型這些指的就是資料型別。
當年那些設計計算機語言的人,為什麼會考慮到資料型別呢?
比如,大家都需要住房子,也都希望房子越大越好。但顯然,大家能夠買的房子是不一樣的。
於是商品房就出現了各種各樣的房型,有別墅的,有錯層的,有單間的,甚至在北京還出現了膠囊公寓——只有兩平方公尺的房間。
這樣子就滿足了大家的不同需求。
同樣,在計算機中,記憶體也不是無限大的,你要計算入1+1=2這樣的整型數字的加減乘除運算,顯然不需要開闢很大的記憶體空間。
而如果要計算1.23456789+2.987654321這樣帶大量小數的,就需要開闢比較大的空間才存放的下。
於是計算機的研究者們就考慮,要對資料型別進行分類,分出多種資料型別來適合各種不同的計算條件差異。
例如在c語言中,按照取值的不同,資料型別可以分為兩類:
抽象:是指抽取出事物具有的普遍性的本質。它要求抽出問題的特徵而忽略非本質的細節,是對具體事物的乙個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節。
我們對已有的資料型別進行抽象,就有了抽象資料型別。
抽象資料型別(abstract data type,adt)是指乙個數學模型及定義在該模型上的一組操作。
抽象資料型別的定義僅取決於它的一組邏輯特性,而與其在計算機內部如何表示和實現無關。
比如1+1=2這樣乙個操作,在不同cpu的處理上可能不一樣,但由於其定義的數學特性相同,所以在計算機程式設計者看來,它們都是相同的。
「抽象」的意義在於資料型別的數學抽象特性。
而且,抽象資料型別不僅僅指那些已經定義並實現的資料型別,還可以是計算機程式設計者在設計軟體程式時自己定義的資料型別。
例如乙個3d遊戲中,要定位角色的位置,那麼總會出現x,y,z三個整型資料組合在一起的座標。我們就可以定義乙個point的抽象資料型別,它擁有x,y,z三個整型變數,這樣我們就可以方便的對乙個角色的位置進行操作。
為了方便描述,我們給出了描述抽象資料型別的標準格式:
adt 抽象資料型別名
data
資料元素之間邏輯關係的定義
operation
操作endadt
資料結構與演算法 線性表
概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...
資料結構與演算法 線性表
n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...
資料結構與演算法 線性表
1.線性表 1.1 線性表的定義和基本運算 定義 線性表是具有相同資料型別的n個資料元素的有限序列。除表頭元素外,每個元素有且僅有乙個直接前驅 除表尾元素外,每個元素有且僅有乙個直接後繼。特點 個數有限 具有邏輯上的順序性 資料元素型別都相同。基本操作 初始化 求表長 按值查詢 按位查詢 插入 刪除...