程序猿必修課之?dāng)?shù)據(jù)結(jié)構(gòu)(一)數(shù)據(jù)結(jié)構(gòu)基本概念和術(shù)語

原文出自:http://www.lxweimin.com/p/2a8a851c3ab0

你還在為開發(fā)中頻繁切換環(huán)境打包而煩惱嗎?快來試試 Environment Switcher 吧!使用它可以在app運(yùn)行時(shí)一鍵切換環(huán)境,而且還支持其他貼心小功能,有了它媽媽再也不用擔(dān)心頻繁環(huán)境切換了。https://github.com/CodeXiaoMai/EnvironmentSwitcher

數(shù)據(jù)結(jié)構(gòu):是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。

本文將“數(shù)據(jù)結(jié)構(gòu)”分為 “數(shù)據(jù)” 和 “結(jié)構(gòu)” 兩部分。

數(shù)據(jù)

  1. 程序設(shè)計(jì) = 數(shù)據(jù)結(jié)構(gòu) + 算法

  2. 數(shù)據(jù)

    “數(shù)據(jù)”是描述客觀事物的符號,是計(jì)算機(jī)中可以操作的對象,是能被計(jì)算機(jī)識(shí)別,并輸入給計(jì)算機(jī)處理的符號集合。也就是說,我們這里說的數(shù)據(jù)其實(shí)就是符號,而且這些符號必須具備兩個(gè)前提:

    • 可以輸入到計(jì)算機(jī)中
    • 能被計(jì)算機(jī)程序處理

    比如,數(shù)值、聲音、圖像、視頻等都是數(shù)據(jù)。

  3. 數(shù)據(jù)元素

    “數(shù)據(jù)元素”是組成數(shù)據(jù)的、有一定意義的基本單位,在計(jì)算機(jī)中通常作為整體處理。也被稱為記錄。

    比如,在人類中,人就是數(shù)據(jù)元素。

  4. 數(shù)據(jù)項(xiàng)

    一個(gè)數(shù)據(jù)元素可以由若干個(gè)數(shù)據(jù)項(xiàng)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)不可分割的最小單位。

    比如人這個(gè)數(shù)據(jù)元素,可以有眼、耳、嘴等這些數(shù)據(jù)項(xiàng),也可以有姓名、年齡、性別等這些數(shù)據(jù)項(xiàng)。

  5. 數(shù)據(jù)對象

    “數(shù)據(jù)對象”是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的子集。

    性質(zhì)相同,是指數(shù)據(jù)元素具有相同數(shù)量和類型的數(shù)據(jù)項(xiàng)。比如人都有姓名、性別等相同的數(shù)據(jù)項(xiàng)。

  6. 數(shù)據(jù)結(jié)構(gòu)

    “數(shù)據(jù)結(jié)構(gòu)”是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。

它們之間的關(guān)系:

數(shù)據(jù)(數(shù)據(jù)對象)
|
數(shù)據(jù)元素
|
數(shù)據(jù)項(xiàng)

結(jié)構(gòu)

按照視點(diǎn)的不同,我們把數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。邏輯結(jié)構(gòu)是面向問題的,而物理結(jié)構(gòu)是面向計(jì)算機(jī)的。

邏輯結(jié)構(gòu)

“邏輯結(jié)構(gòu)”是指數(shù)據(jù)對象中數(shù)據(jù)元素之間的相互關(guān)系。

邏輯分為四種:

  1. 集合結(jié)構(gòu):

集合結(jié)構(gòu)中的數(shù)據(jù)元素除了同屬于一個(gè)集合外,它們之間沒有其他關(guān)系。

  1. 線性結(jié)構(gòu):

線性結(jié)構(gòu)中的數(shù)據(jù)元素之間是一對一的關(guān)系。

  1. 樹形結(jié)構(gòu):

    樹形結(jié)構(gòu)中的數(shù)據(jù)元素之間存在一對多的層次關(guān)系。

  2. 圖形結(jié)構(gòu):

    圖形結(jié)構(gòu)的數(shù)據(jù)元素是多對多的關(guān)系。

物理結(jié)構(gòu)

“物理結(jié)構(gòu)”是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存儲(chǔ)形式。

數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu)形式有兩種:順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。

  1. 順序存儲(chǔ)結(jié)構(gòu):
    把數(shù)據(jù)元素存放在地址連續(xù)的存儲(chǔ)單元里,其數(shù)據(jù)間的邏輯關(guān)系和物理關(guān)系是一致的。
  2. 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu):
    把數(shù)據(jù)元素存放在任意的存儲(chǔ)單元里,這組存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的。

抽象數(shù)據(jù)類型

數(shù)據(jù)類型是指一組性質(zhì)相同的值的集合及定義在此集合上的一些操作的總稱。

在C語言中,按照取值的不同,數(shù)據(jù)類型可以分為兩類:

  • 原子類型:不可以再分解的基本類型,包括整型、實(shí)型、字符型等。
  • 結(jié)構(gòu)類型:由若干個(gè)類型組合而成,是可以再分解的。

抽象數(shù)據(jù)類型(Abstract Data Type, ADT):是指一個(gè)數(shù)學(xué)模型及定義在該模型上的一組操作。它體現(xiàn)了程序設(shè)計(jì)中問題分解、抽象和信息隱藏的特性。

抽象數(shù)據(jù)類型的標(biāo)準(zhǔn)格式:

ADT 抽象數(shù)據(jù)類型名
Data
    數(shù)據(jù)元素之間邏輯關(guān)系的定義
Operation
        操作 1
            初始條件
            操作結(jié)果描述
        操作 2
            ……
        操作 n
            ……
endADT

總結(jié)

  1. 數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。
  2. 數(shù)據(jù)的邏輯結(jié)構(gòu)分為:集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖形結(jié)構(gòu)。
  3. 數(shù)據(jù)的物理結(jié)構(gòu)分為:順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

下一章 程序猿必修課之?dāng)?shù)據(jù)結(jié)構(gòu)(二)算法和算法的復(fù)雜度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容