线性表 - 数据结构和算法06
生活随笔
收集整理的這篇文章主要介紹了
线性表 - 数据结构和算法06
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
線性表
?讓編程改變世界
Change the world by program
?
感受線性表的存在
? 各位魚油大家好,從今天開始小甲魚帶大家開始學習第一個數據結構:線性表 先讓我我們通過圖片來感受一下,線性表的特性吧。 [caption id="attachment_758" align="aligncenter" width="602"] 感受線性表的存在[/caption] ? 大家姑且可以把這幅圖想象為小甲魚組織魚油們外出野營。因為咱魚油隊伍強大,要小甲魚記住每位魚油并區分還真不是一件容易的事。 所以咱想到了一個辦法,讓大家按照一個約定排成一隊,以后大家要怎么記住自己的位置呢?沒錯,大家只需要記住自己前邊的魚油即可。 小甲魚也可以很快的清點人數,萬一有人走丟,也能在最快時間內知道是誰不見了,因為只需要問哪位魚油的“前驅”不見啦即可。 ?線性表的定義
? 線性表,從剛才小甲魚的描述中我們可以很容易感受到是像排隊一樣,具有線一樣性質的結構。 如果像下邊這樣,我們就不能說是線性表了: [caption id="attachment_759" align="aligncenter" width="402"] 這不是線性表[/caption] ? 線性表(List):由零個或多個數據元素組成的有限序列。 ?這里需要強調幾個關鍵的地方:
首先它是一個序列,也就是說元素之間是有個先來后到的,像剛才的小蝌蚪就沒有順序。 若元素存在多個,則第一個元素無前驅,而最后一個元素無后繼,其他元素都有且只有一個前驅和后繼。 另外,線性表強調是有限的,事實上無論計算機發展到多強大,它所處理的元素都是有限的。 ?如果用數學語言來進行定義,可如下:
若將線性表記為(a1,…,ai-1,ai,ai+1,…an),則表中ai-1領先于ai,ai領先于ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接后繼元素。 [caption id="attachment_760" align="aligncenter" width="600"] 線性表的定義[/caption] ? 所以線性表元素的個數n(n>=0)定義為線性表的長度,當n=0時,稱為空表。 ? ?考題模擬
?請問公司的組織架構是否屬于線性關系?
分析:一般公司的總經理管理幾個總監,每個總監管理幾個經理,每個經理都有各自的下屬和員工。 ?那這樣的組織架構是不是線性關系呢?
當然不是啦! 注意線性關系的條件是如果存在多個元素,則“第一個元素無前驅,而最后一個元素無后繼,其他元素都有且只有一個前驅和后繼?!??那么班級里同學之間的友誼呢?
當然也不是,因為每個人都會跟許多同學建立純純的友誼關系。 ?好,再來一題,那如果是情侶間的愛情關系呢?
哈,還是扯淡,這要是線性關系還哪里容得下第三者?! ?最后一個問題,一個班級里的點名冊,是不是線性表?
嗯,這個就是了。 [caption id="attachment_761" align="aligncenter" width="600"] 定義線性表[/caption] ?抽象數據類型
? 因為下節課我們會講線性表的抽象數據類型,所以這節課的末尾部分給大家介紹一下什么是抽象數據類型。 那在介紹抽象數據類型之前,我們應該了解數據類型的定義是什么? ? 數據類型:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。 例如很多編程語言的整型,浮點型,字符型這些指的就是數據類型。 ?當年那些設計計算機語言的人,為什么會考慮到數據類型呢?
比如,大家都需要住房子,也都希望房子越大越好。但顯然,沒有多少錢的話考慮房子是沒啥意義的。 于是商品房就出現了各種各樣的房型,有別墅的,有錯層的,有單間的,甚至在北京還出現了膠囊公寓——只有兩平方米的房間。 這樣子就滿足了大家的不同需求。 ? 同樣,在計算機中,內存也不是無限大的,你要計算入1+1=2這樣的整型數字的加減乘除運算,顯然不需要開辟很大的內存空間。 而如果要計算1.23456789+2.987654321這樣帶大量小數的,就需要開辟比較大的空間才存放的下。 ? 于是計算機的研究者們就考慮,要對數據類型進行分類,分出多種數據類型來適合各種不同的計算條件差異。 ?例如在C語言中,按照取值的不同,數據類型可以分為兩類:
原子類型:不可以再分解的基本類型,例如整型、浮點型、字符型等。 結構類型:由若干個類型組合而成,是可以再分解的,例如整型數組是由若干整型數據組成的。 ? 抽象:是指抽取出事物具有的普遍性的本質。它要求抽出問題的特征而忽略非本質的細節,是對具體事物的一個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節。 我們對已有的數據類型進行抽象,就有了抽象數據類型。 ? 抽象數據類型(Abstract Data Type,ADT)是指一個數學模型及定義在該模型上的一組操作。 抽象數據類型的定義僅取決于它的一組邏輯特性,而與其在計算機內部如何表示和實現無關。 比如1+1=2這樣一個操作,在不同CPU的處理上可能不一樣,但由于其定義的數學特性相同,所以在計算機編程者看來,它們都是相同的。 ? “抽象”的意義在于數據類型的數學抽象特性。 而且,抽象數據類型不僅僅指那些已經定義并實現的數據類型,還可以是計算機編程者在設計軟件程序時自己定義的數據類型。 例如一個3D游戲中,要定位角色的位置,那么總會出現x,y,z三個整型數據組合在一起的坐標。 我們就可以定義一個point的抽象數據類型,它擁有x,y,z三個整型變量,這樣我們就可以方便的對一個角色的位置進行操作。 [caption id="attachment_762" align="aligncenter" width="600"] 抽象數據類型[/caption] ? 為了便于在之后的講解中對抽象數據類型進行規范的描述,我們給出了描述抽象數據類型的標準格式: [codesyntax lang="php"] ADT 抽象數據類型名 Data數據元素之間邏輯關系的定義 Operation操作 endADT [/codesyntax] [buy]?獲得所有教學視頻、課件、源代碼等資源打包?[/buy] [Downlink href='http://kuai.xunlei.com/d/LZXTQVVGNHYI']視頻下載[/Downlink] [Downlink href='http://urlxf.qq.com/?yYB7jm6']備胎下載[/Downlink]轉載于:https://www.cnblogs.com/LoveFishC/archive/2012/09/27/3847238.html
總結
以上是生活随笔為你收集整理的线性表 - 数据结构和算法06的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到拍苍蝇怎么回事
- 下一篇: Yii Zii.widgets.Cmen