什么是數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)又要學(xué)什么?
一. 數(shù)據(jù)結(jié)構(gòu)實(shí)際上處理的問題就是如何利用程序代碼把現(xiàn)實(shí)世界的問題信息化處理
二. 數(shù)據(jù)結(jié)構(gòu)考究的還有身為程序員個(gè)人如何去利用計(jì)算機(jī)進(jìn)行這些信息的高效處理從而創(chuàng)造更多的價(jià)值
這種信息化可以舉幾個(gè)例子
1.支付方面:在過去的時(shí)間階段我們的交易方法通常是現(xiàn)金,而現(xiàn)在你想想,思考一下,你有多久出門沒有用過現(xiàn)金了,在現(xiàn)在這個(gè)社會(huì)人們從現(xiàn)金的支付形勢(shì)變?yōu)榱宋⑿?、支付寶、信用卡等?/p>

2.交友方面:以前我們交友是需要去到學(xué)校,在家里周圍去找小伙伴,而現(xiàn)在呢?世面上的交友軟件比比皆是,每個(gè)人只要在qq中加一下好友你就是我朋友了,你只需要在抖音點(diǎn)點(diǎn)關(guān)注你就占我的一個(gè)永久好友位

而數(shù)據(jù)結(jié)構(gòu)具體的來說又是什么東西呢?

這么看下來好像還是有點(diǎn)繞,
數(shù)據(jù)結(jié)構(gòu)簡單來說實(shí)際上就是一種抽象的封裝。
再具體點(diǎn)的說法的話就是把一堆數(shù)據(jù)按照某種既定格式把他們進(jìn)行一個(gè)規(guī)定,排序
我再給舉個(gè)例子:西紅柿炒蛋相信大家都吃過,而在這個(gè)地方我同樣以西紅柿炒蛋為例,這里是百度百科中西紅柿炒蛋的做法

好,下面在這里我就用偽碼給大家演示一下
首先來抽象一下“番茄炒蛋”
struct 西紅柿炒蛋{
雞蛋 = []
番茄= []
食用油= []
大蒜片 = []
食用鹽 = []
味精 = []
蔥= []
蒜苗 = []
白糖= []
}
上述這個(gè)結(jié)構(gòu)體就是一個(gè)自定義的數(shù)據(jù)結(jié)構(gòu),將很多種不同的東西融合在一起;而計(jì)算機(jī)中的數(shù)據(jù)結(jié)構(gòu),則是把一些基本的數(shù)據(jù)類型,如int、double等融合成一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如map、隊(duì)列。
抽象完口水雞再來抽象“你”吧
class 你{
float 體重 = 80kg;
int 年齡 = 20;
。。。
此處省略一萬字
。。。
bool eat (番茄炒蛋){
番茄炒蛋.番茄 -=25克;
番茄炒蛋.雞蛋 -=25克;
體重+=50克;
}
}
}
然后再來抽象一下“廚師”:
class 廚師{
番茄炒蛋 做菜(調(diào)料){
番茄 番茄 = new 番茄 ();
雞蛋 雞蛋 = new 雞蛋 ();
番茄 .append(300克番茄 );
雞蛋.append (300克雞蛋);
把鍋燒熱;
加入調(diào)料;
return 番茄炒蛋 ;
}
}
這里的抽象有點(diǎn)隨意,不過大家理解就好,我們把一堆很基本的元素抽象成了3個(gè)數(shù)據(jù)結(jié)構(gòu),這三個(gè)元素就是所謂的數(shù)據(jù)結(jié)構(gòu)。
而平時(shí)我們說的鏈表無非就是把一些基本元素和指針做了融合,樹、圖也是把指針和一些基本元素融合后再外加一些流程,如函數(shù)。
比如python的dict,dict的key,value就是兩種相同或者不同的數(shù)據(jù)類型;dict還提供了一些函數(shù),譬如get(),set()。dict就是一個(gè)典型的被封裝的數(shù)據(jù)結(jié)構(gòu)。