《大話數據結構》讀書筆記(一)

《大話數據結構》程杰 著

程序設計 = 數據結構 + 算法

什么是數據結構
  • 是互相之間存在一種或多種特定關系的數據元素的集合
  • 是一門研究非數值計算的程序設計問題中的操作對象,以及它們之間的關系和操作等相關問題的學科
  • 按照視點的不同,分為邏輯結構物理結構
什么是數據
  • 描述客觀事物的符號
  • 是計算機中可以操作的對象
  • 能被計算機識別,并輸入給計算機處理的符號集合
    • 數值類型(整型、實型等,可以進行數值計算)
    • 非數值類型(聲音、圖像、視頻等通過編碼手段變成字符數據來處理)
什么是數據元素
  • 是組成數據的、有一定意義的基本單位
  • 在計算機中通常作為整體處理
  • 也被成為記錄

比如,在人類中,什么是數據元素呀?當然是人啦!
畜類呢?牛、馬、羊、狗、豬等動物當然就是禽類的數據元素。

什么是數據項
  • 一個數據元素可以由若干個數據項組成
  • 數據項是數據不可分割的最小單位

比如人這樣的數據元素,可以有眼、耳、口、鼻、手、腳、嘴等這些數據項,也可以有姓名、年齡、性別、出生地址、聯系電話等數據項,具體有哪些數據項,要視你做的系統來決定。不過我們在真正討論問題時,數據元素才是數據結構中建立模型的著眼點。就像我們談論一部電影時,是討論這部電影角色這樣的“數據元素”,而不是針對這個角色的姓名或者年齡這樣的“數據項”去研究分析。

什么是數據對象

  • 性質相同的數據元素的集合
  • 是數據的子集

什么叫性質相同呢,是指數據元素具有相同數量和類型的數據項,比如人都有姓名、生日、性別等相同的數據項。因數據對象是數據的子集,在實際應用中,在不產生混淆的情況下,我們都將數據對象簡稱為數據。

什么是結構
  • 現實世界中,不同數據之間不是獨立的
  • 存在特定的關系
  • 將這些關系稱為結構
  • 指各個組成部分互相搭配和排列的方式

比如分子結構,就是說組成分子的原子之間的排列方式。

什么是邏輯結構
  • 數據對象中數據元素之間的互相關系

邏輯結構的四種分類

  • 集合結構
  • 集合結構中的數據元素除了同屬于一個集合外,它們之間沒有其他關系
  • 各個元素是“平等”的,它們的共同屬性是“同屬于一個集合”,類似數學中的集合
集合結構
  • 線性結構
    • 線性結構中的數據元素之間是一對一的關系
線性結構
  • 樹形結構
  • 數據元素之間存在一種一對多的層次關系
樹形結構
  • 圖形結構
  • 數據元素是多對多的關系
圖形結構

邏輯結構是針對具體問題的,是為了解決某個問題,在對問題理解的基礎上,選擇一個合適的數據結構表示數據元素之間的邏輯關系

什么是物理結構(也稱存儲結構)
  • 實際上就是如何把數據元素存儲到計算機的存儲器中,并正確反映數據元素之間的邏輯關系
  • 存儲器主要是針對內存而言的,像硬盤、軟盤、光盤等外部存儲器的數據組織通常用文件結構來描述
  • 存儲結構形式:順序存儲鏈式儲存

順序儲存結構

  • 是把數據元素存放在地址連續的儲存單元里,其數據間的邏輯關系和物理關系是一致的
  • 說白了,就是排隊占位,一個蘿卜一個坑,都別插隊
  • 數組就是這個結構
順序儲存結構

鏈式儲存結構

比如銀醫院等地方,設置了排隊系統,每個人去了,先領一個號,等著叫號,叫到時去辦理業務或看病。在等待的時候,愛在哪在哪,可以坐著、站著,去外面溜達一圈,只要及時回來就行。你關注的是前一個號有沒有被叫到,叫到了,下一個就輪到了。

  • 是把數據元素存放在任意的存儲單元里
  • 這組存儲單元可以是連續的,也可以是不連續的
  • 用一個指針存放數據元素的地址,通過地址可以找到相關數據元素的位置

邏輯結構是面向問題的,而物理結構就是面向計算機的,其基本的目標就是將數據及其邏輯關系存儲到計算機的內存中。

鏈式儲存結構
數據類型
  • 是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。
  • 在C語言中,按照取值的不同,可以分類兩類
  • 原子類型:是不可以再分解的基本類型,包括整型、實型、字符型等
  • 結構類型:由若干個類型組合而成,是可以再分解的。例如,整型數組是由若干整型數據組成的
抽象數據類型

抽象是指抽取出事物具有的普遍性的本質。它是抽出問題的特征而忽略非本質的細節,是對 具體事物的一個概括。抽象是一種思考問題的方式,它隱藏了繁雜的細節,只保留實現目標所必需的信息。

  • 抽象數據類型是指一個數學模型及定義在該模型上的一組操作
  • 抽象數據類型的定義僅取決于它的一組邏輯特性,而與其在計算機內部如何表示和實現無關

一個數據類型定義了:一個數據對象、數據對象中各數據元素之間的關系及數據元素的操作。至于,一個抽象數據類型到底需要哪些操作,這就只能由設計者根據實際需要來定。**抽象數據類型體現了程序設計中問題分抽象和信息隱藏的特性。

總結回顧
數據結構
結構分類
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容