邏輯結構和存儲結構


這兩天在復習數據結構部分的內容,之前考研的時候對數據結構的理解感覺不深,因為只是考研專業課要考數據結構,所以就單獨看了數據結構的書,做了各種題,記了各種添加、刪除、遍歷等等。
那數據結構到底是什么?
百度百科:數據結構具體指同一類數據元素中,各元素之間的相互關系,包括三個組成成分,數據的邏輯結構,數據的存儲結構和數據運算結構。結合今天在復習過程中新的理解,主要總結一下邏輯結構和存儲結構。
  • 什么是邏輯結構?

     簡單說,邏輯結構就是數據之間的關系。而按數據之間的關系來說,邏輯結構大概可以分為兩種:線性結構非線性結構(集合、樹、網)

    • 線性結構:有且只有一個開始結點和一個終端結點,並且所有結點都最多只有一個直接前驅和一個直接后繼。例如:線性表,典型的線性表有:順序表、鏈表、棧(順序棧、鏈棧)隊列(順序隊列、鏈隊列)。它們共同的特點就是數據之間的線性關系,除了頭結點和尾結點之外,每個結點都有唯一的前驅和唯一的后繼,也就是所謂的一對一的關系。
    • 非線性結構:對應於線性結構,非線性結構也就是每個結點可以有不止一個直接前驅直接后繼。常見的非線性結構包括:樹(二叉樹)、圖(網)等。
  • 什么是存儲結構?

     邏輯結構指的是數據間的關系,而存儲結構是邏輯結構的存儲映像。通俗的講,可以將存儲結構理解為邏輯結構用計算機語言的實現。常見的存儲結構有順序存儲、鏈式存儲、索引存儲以及散列存儲(哈希表)

    • 順序存儲:把邏輯上相鄰的節點存儲在物理位置上相鄰的存儲單元中,結點之間的邏輯關系由存儲單元的鄰接關系來體現。由此得到的存儲結構為順序存儲結構,通常順序存儲結構是借助於數組來描述的。優點:節省空間,可以實現隨機存取;缺點:插入、刪除時需要移動元素,效率低。

    • 鏈式存儲:在計算機中用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。特點是元素在物理上可以不相鄰,所以每個數據元素包括了一個數據域和一個指針域,數據域用來存放數據,而指針域用來指向其后繼結點的位置。優點:插入、刪除靈活;缺點:不能隨機存取,查找速度慢。

  • 邏輯結構和存儲結構的區別

     這兩者並不沖突,一個指的是數據之間的關系,而另一個指這種關系在計算機中的表現形式。比如,線性表中的棧,數據元素之間的關系是一對一的,除頭和尾結點之外的每個結點都有唯一的前驅和唯一的后繼,這體現的是邏輯結構;而對於棧中的結點來說,它們可以順序存儲(也就是順序棧),取一段連續的存儲空間,將棧結點按順序存入,每個結點和其前驅和后繼在物理上都是相鄰的。同時,棧結點也可以鏈式存儲(鏈棧),每個結點中包括數據域和指針域,而指針域就是用來指向其后繼的,在訪問時就可以通過指針來找到其后繼進行訪問,每個結點之間物理上可以相鄰也可以不相鄰。

    另外的總結

    不同的線性表之間的區別:
    線性表在元素的關系上是一樣的,都是“線性“關系,不同的線性表區別主要體現在不同的特性上。比如:隊列的先進先出、棧的后進先出等。
    以存儲結構相同、邏輯結構又同為線性表的鏈棧和鏈隊列為例,它們都是鏈式存儲的,每個結點都是由數據域和指針域組成,每個結點也都有唯一的前驅和唯一的后繼(除頭尾結點外)。那么它們看起來就很相似,區別呢?區別就在於給他們定義的特殊操作,它們都有”出“和”入“兩種操作,一個是“先進先出”,而一個是“后進先出”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM