什么是數(shù)據(jù)結構杖刷,數(shù)據(jù)結構又要學什么?
一. 數(shù)據(jù)結構實際上處理的問題就是如何利用程序代碼把現(xiàn)實世界的問題信息化處理
二. 數(shù)據(jù)結構考究的還有身為程序員個人如何去利用計算機進行這些信息的高效處理從而創(chuàng)造更多的價值
這種信息化可以舉幾個例子
1.支付方面:在過去的時間階段我們的交易方法通常是現(xiàn)金闷堡,而現(xiàn)在你想想鲤妥,思考一下,你有多久出門沒有用過現(xiàn)金了舀患,在現(xiàn)在這個社會人們從現(xiàn)金的支付形勢變?yōu)榱宋⑿哦肌⒅Ц秾毧⑿庞每ǖ鹊?/p>
2.交友方面:以前我們交友是需要去到學校,在家里周圍去找小伙伴枫匾,而現(xiàn)在呢架诞?世面上的交友軟件比比皆是,每個人只要在qq中加一下好友你就是我朋友了干茉,你只需要在抖音點點關注你就占我的一個永久好友位
而數(shù)據(jù)結構具體的來說又是什么東西呢谴忧?
這么看下來好像還是有點繞,
數(shù)據(jù)結構簡單來說實際上就是一種抽象的封裝。
再具體點的說法的話就是把一堆數(shù)據(jù)按照某種既定格式把他們進行一個規(guī)定沾谓,排序
我再給舉個例子:西紅柿炒蛋相信大家都吃過委造,而在這個地方我同樣以西紅柿炒蛋為例,這里是百度百科中西紅柿炒蛋的做法
好均驶,下面在這里我就用偽碼給大家演示一下
首先來抽象一下“番茄炒蛋”
struct 西紅柿炒蛋{
雞蛋 = []
番茄= []
食用油= []
大蒜片 = []
食用鹽 = []
味精 = []
蔥= []
蒜苗 = []
白糖= []
}
上述這個結構體就是一個自定義的數(shù)據(jù)結構昏兆,將很多種不同的東西融合在一起;而計算機中的數(shù)據(jù)結構妇穴,則是把一些基本的數(shù)據(jù)類型爬虱,如int、double等融合成一些復雜的數(shù)據(jù)結構腾它,如map跑筝、隊列。
抽象完口水雞再來抽象“你”吧
class 你{
float 體重 = 80kg;
int 年齡 = 20;
瞒滴。曲梗。。
此處省略一萬字
妓忍。虏两。。
bool eat (番茄炒蛋){
番茄炒蛋.番茄 -=25克世剖;
番茄炒蛋.雞蛋 -=25克碘举;
體重+=50克;
}
}
}
然后再來抽象一下“廚師”:
class 廚師{
番茄炒蛋 做菜(調料){
番茄 番茄 = new 番茄 ();
雞蛋 雞蛋 = new 雞蛋 ();
番茄 .append(300克番茄 );
雞蛋.append (300克雞蛋);
把鍋燒熱搁廓;
加入調料;
return 番茄炒蛋 ;
}
}
這里的抽象有點隨意耕皮,不過大家理解就好境蜕,我們把一堆很基本的元素抽象成了3個數(shù)據(jù)結構,這三個元素就是所謂的數(shù)據(jù)結構凌停。
而平時我們說的鏈表無非就是把一些基本元素和指針做了融合,樹、圖也是把指針和一些基本元素融合后再外加一些流程氏豌,如函數(shù)驱敲。
比如python的dict,dict的key赐俗,value就是兩種相同或者不同的數(shù)據(jù)類型拉队;dict還提供了一些函數(shù),譬如get()阻逮,set()粱快。dict就是一個典型的被封裝的數(shù)據(jù)結構。