什么是数据结构?对数据结构的理解
數(shù)據(jù)結(jié)構(gòu)
大學(xué)已逐漸進(jìn)入尾聲,想回顧一下自己專業(yè)所學(xué)的內(nèi)容,看到數(shù)據(jù)結(jié)構(gòu)這些概念,也總是記不住,理解也不是很深刻。想借助寫下這些來加深一些印象吧。以下一些相關(guān)的內(nèi)容,來自王道的數(shù)據(jù)結(jié)構(gòu)講解。
基本概念
數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。這個(gè)概念對(duì)于我來說太過于深?yuàn)W,也不能記住,于是我思考。舉個(gè)例子,在食堂里吃麻辣香鍋,我們需要排隊(duì),并且食堂阿姨會(huì)給你號(hào)碼牌,我們吃麻辣香鍋的人就是數(shù)據(jù)元素,這個(gè)號(hào)碼牌就是我們的排隊(duì)信息,我們之間通過號(hào)碼牌存在一種特定關(guān)系,這種存在一種特定關(guān)系的集合,便是數(shù)據(jù)結(jié)構(gòu)。所以可以看出,數(shù)據(jù)結(jié)構(gòu)是個(gè)集合,不能單獨(dú)存在。這里的數(shù)據(jù)元素是數(shù)據(jù)的基本單位,一個(gè)數(shù)據(jù)元素可有若干個(gè)數(shù)據(jù)項(xiàng)組成。吃麻辣香鍋的人算是數(shù)據(jù)元素,我們具有以下數(shù)據(jù)項(xiàng),比如姓名,年齡、號(hào)數(shù)。可以說數(shù)據(jù)元素也算是數(shù)據(jù)項(xiàng)的集合吧。
數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)對(duì)象
數(shù)據(jù)結(jié)構(gòu)是一種或多種特定關(guān)系數(shù)據(jù)元素的集合,而數(shù)據(jù)對(duì)象是大范圍的,是指具有相同性質(zhì)的數(shù)據(jù)元素的集合。是數(shù)據(jù)的一個(gè)子集。這里我覺得應(yīng)該這樣理解,數(shù)據(jù)元素包括若干數(shù)據(jù)項(xiàng),具有相同性質(zhì)的數(shù)據(jù)項(xiàng)是數(shù)據(jù)項(xiàng)的一個(gè)子集。舉個(gè)例子,學(xué)校食堂麻辣香鍋同學(xué)排隊(duì)的信息的集合是數(shù)據(jù)結(jié)構(gòu),在全國(guó)麻辣香鍋顧客排隊(duì)信息的集合便是數(shù)據(jù)對(duì)象,可以說數(shù)據(jù)結(jié)構(gòu)算是數(shù)據(jù)對(duì)象的一個(gè)子集吧。
數(shù)據(jù)結(jié)構(gòu)三要素
數(shù)據(jù)結(jié)構(gòu)三要素包括:邏輯結(jié)構(gòu)、物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu))、數(shù)據(jù)的運(yùn)算。
邏輯結(jié)構(gòu)
數(shù)據(jù)的邏輯結(jié)構(gòu)可分為集合,線性結(jié)構(gòu),樹形結(jié)構(gòu),圖狀結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))。1.集合,不用多講,吃麻辣香鍋的同學(xué)便是集合。2.線性結(jié)構(gòu)也比較容易理解。食堂吃飯需要排隊(duì),是一對(duì)一關(guān)系,除了第一個(gè)人,所有元素都有唯一前驅(qū)。除了最后一人,所有元素都有唯一后繼。3。樹形結(jié)構(gòu),數(shù)據(jù)元素是一對(duì)多的關(guān)系,比如公司老板他手下有若干名干部,每個(gè)干部下又有若干員工。4.圖形結(jié)構(gòu),是多對(duì)多的關(guān)系,比如朋友這個(gè)集合,每個(gè)人有屬于自己的朋友,我朋友的朋友不是我的朋友,這就是多對(duì)多的一種類型。
物理結(jié)構(gòu)
物理結(jié)構(gòu)也可稱為存儲(chǔ)結(jié)構(gòu),如何用計(jì)算機(jī)表示數(shù)據(jù)元素的邏輯關(guān)系?也就是如何用計(jì)算機(jī)存儲(chǔ)?
數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)可分為順序存儲(chǔ),鏈?zhǔn)酱鎯?chǔ)、索引存儲(chǔ)、散列存儲(chǔ)。
1.順序存儲(chǔ),把邏輯上相鄰的元素存儲(chǔ)在物理位置上也相鄰的存儲(chǔ)單元中,元素之間的關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來體現(xiàn),可用來存儲(chǔ)線性結(jié)構(gòu)。
2.鏈?zhǔn)酱鎯?chǔ),邏輯上相鄰的元素在物理位置上可以不相鄰,借助指示元素存儲(chǔ)地址的指針來表示元素之間的邏輯關(guān)系。也可用來存儲(chǔ)線性結(jié)構(gòu)。
3.索引存儲(chǔ),在存儲(chǔ)元素的同時(shí),還建立附加的索引表。索引表中的每項(xiàng)稱為索引項(xiàng),索引項(xiàng)一般形式是(關(guān)鍵字,地址)。也可用來存儲(chǔ)線性結(jié)構(gòu)。
4.散列存儲(chǔ),根據(jù)元素的關(guān)鍵字直接計(jì)算出該元素的存儲(chǔ)地址,又稱哈希存儲(chǔ)。
數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)會(huì)影響存儲(chǔ)空間分配的方便程度、對(duì)數(shù)據(jù)運(yùn)算的速度。,若采用順序存儲(chǔ),則各個(gè)數(shù)據(jù)元素在物理上必須是連續(xù)的;若采用非順序存儲(chǔ),則各個(gè)元素在物理上可以是離散的。
數(shù)據(jù)的運(yùn)算
施加在數(shù)據(jù)上的運(yùn)算包括運(yùn)算的定義和實(shí)現(xiàn)。運(yùn)算的定義是針對(duì)邏輯結(jié)構(gòu)的,指出運(yùn)算的功能;運(yùn)算的實(shí)現(xiàn)是針對(duì)存儲(chǔ)結(jié)構(gòu)的,指出運(yùn)算的具體操作步驟。
數(shù)據(jù)類型、抽象數(shù)據(jù)類型
數(shù)據(jù)類型是一個(gè)值的集合和定義在此集合上的一組操作的總稱。
1.原子類型。其值不可再分的數(shù)據(jù)類型。
2.結(jié)構(gòu)類型。其值可以再分解為若干成分的數(shù)據(jù)類型。
3.抽象數(shù)據(jù)類型(ADT)是抽象數(shù)據(jù)組織及與之相關(guān)的操作。ADT用數(shù)學(xué)化的語(yǔ)言定義數(shù)據(jù)的邏輯結(jié)構(gòu),定義運(yùn)算。與具體的實(shí)現(xiàn)無關(guān)。
知識(shí)回顧與重要考點(diǎn)
數(shù)據(jù)結(jié)構(gòu)這門課著重關(guān)注的是數(shù)據(jù)元素之間的關(guān)系,和對(duì)這些數(shù)據(jù)元素的操作,而不關(guān)心具體的數(shù)據(jù)項(xiàng)內(nèi)容。
持續(xù)更新,未完待續(xù)…
總結(jié)
以上是生活随笔為你收集整理的什么是数据结构?对数据结构的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax反序列化出错,将数据从jquer
- 下一篇: 深度理解 Virtual DOM