物理結構和邏輯結構更通俗解釋

什麼是數據存儲的物理結構呢?

如果把數據結構比作活生生的人,那麼物理結構就是人的血肉和骨骼,看得見,摸得
著,實實在在。例如我們剛剛學過的數組和鏈表,都是記憶體中實實在在的存儲結構。

而在物質的人體之上,還存在著人的思想和精神,它們看不見、摸不著。看過電影
《阿凡達》 嗎?男主角的思想意識從一個瘦弱殘疾的人類身上被移植到一個高大威猛的
藍皮膚外星人身上,雖然承載思想意識的肉身改變了,但是人格卻是唯一的。

如果把物質層面的人體比作數據存儲的物理結構,那麼精神層面的人格則是數據存儲
的邏輯結構。邏輯結構是抽象的概念,它依賴於物理結構而存在。

下面我們來講解兩個常用數據結構:棧和隊列。這兩者都屬於邏輯結構,它們的物理
實現既可以利用數組,也可以利用鏈表來完成。

在後面的章節中,我們會學習到二叉樹,這也是一種邏輯結構。同樣地,二叉樹也可
以依託於物理上的數組或鏈表來實現。


網上很多文章介紹線性和非線性的時候,都只是給你舉例說哪些是線性結構 ,哪些是非線性結構,類似下圖這種:
摘自知乎:…

我覺得這裡的解釋就不嚴謹,元素之間存在一對一的線性關係,那雙向鏈表類,我可以對應前驅結點還有後繼結點,我覺得應該加上一句限制條件,
想起來一首歌詞好像,向前向後向上向下向左向右哈哈,單方向是一對一的關係就可以。這時候可能會說了,那樹類,比如二叉樹,如下圖所示:
我這裡將1,3葉子節點都看作是2的下方向的對應關係,就是1對2,所以樹不是線性關係,個人理解哈,歡迎大家交流學習一起進步嘻嘻。

前面部分內容摘抄自書籍小灰的演算法之旅