Java資料結構之線性資料結構總結(一)

2021-09-12 07:07:41 字數 789 閱讀 1496

我們學習的資料結構都是從線性資料結構開始的,深刻理解線性資料結構非常必要。

陣列我們可以理解為乙個強物理概念在計算機執行世界的乙個對映,是乙個物理世界到軟體工程呈現的結果,即連續的儲存空間在程式語言中的呈現。所以我們經常將陣列與鍊錶或者程式語言中的引用作對比。

由於資料資料儲存一般是乙個連續的儲存空間,所以資料天然的具有索引,即我們可以隨機訪問(查詢迅速,動態增刪慢)。

鍊錶我們可以結合幾個成語理解:按圖索驥、順藤摸瓜、沿波討源、蔓引株求。也像傳說中的六度空間理論:世界上的任意兩個人之間都可以通過六層以內的朋友鏈而聯絡起來。

首先鍊錶是乙個線性結構,內部資料元素通過元素中的位址獲取,所以鍊錶的元素無法直接隨機獲取,獲取乙個元素只能乙個乙個遍歷,但是這也產生了乙個優點,增刪效率高,但是查詢效率就低了。

佇列最容易理解,很想我們偶爾出去買東西人多了就要排隊,隊首元素先結束排隊出隊完成它的使命。棧像佇列的操作的另乙個極端,先進後出,生活中應用感覺不多(子彈夾中的子彈進出就是一種棧結構)

另外,讀過乙個很形象但讓人感覺不適的比喻:吃了,拉出來就是佇列,吐出來就是棧。

線性結構的最大意義就是保證資料操作的有序性和可控性(其他的資料結構也能保證),避免失控(有一本很有影響力書叫《失控》),計算機世界歸根結底需要資料呈現的有序和可控,否則就是剛才那本書名。人工智慧四個字終究能不能離開人工兩個字很難說,但是如果人工智慧不能離開人工是否是真正意義上的智慧型呢?如果離開了人工向像美劇《西部世界》一樣會不會走向失控?還是會像電影《銀翼殺手》中的機械人比人還具有人的感情?計算科學如果在失控的狀態下又會走向何方?扯得有點遠

此文胡扯到此正式結束,歡迎討論。

資料結構之線性結構

資料結構學習虛函式,幾個知識點 1 抽象類函式本身不能直接例項化,需要其子類例項化虛函式,才能例項化。繼承抽象類的子類必須重寫虛函式,具體函式可實現,也可不實現。2 const修飾符,若修飾函式,則函式引數不能被改變。若修飾成員變數,則成員變數在使用過程中不被改變。修飾傳入引數,則避免引數被改變。3...

資料結構 線性結構

typedef int position typedef struct lnode list struct lnode 初始化 list makeempty 查詢 define error 1 position find list l,elementtype x 插入 bool insert lis...

資料結構 線性結構

線性表基本操作有 1 list makeempty 初始化乙個新的線性表 2 elementtype findkth list l,int i 根據指定的位序i,返回l中相應元素ai i是下標 3 position find list l,elementtype x 已知x,返回線性表l中與x相同的...