C/C++編程筆記:從數(shù)據(jù)處理的角度,淺析大學(xué)課程—數(shù)據(jù)結(jié)構(gòu)
對于計算機行業(yè),說到數(shù)據(jù)處理,就不得不提到數(shù)據(jù)結(jié)構(gòu),它也是對軟件開發(fā)和考研都有非常非常重要作用的一門課程。

那么什么是數(shù)據(jù)結(jié)構(gòu)?在這個問題之前,我們先來研究另外一個問題:計算機的作用是什么?
可以這樣簡單的總結(jié)為:計算機的作用就是通過各種各樣的程序,處理形式多樣的數(shù)據(jù)。
這里有兩個關(guān)鍵字,一個是數(shù)據(jù),一個是處理。

所以我們可以進一步思考:我們要處理的數(shù)據(jù)又有哪些具體的形式?對于某種形式的數(shù)據(jù)可以進行怎樣的處理?
假如,我們想要開發(fā)一個圖書館的圖書管理系統(tǒng)。聯(lián)想我們提及的關(guān)鍵字,一個是數(shù)據(jù),一個是處理。顯然,我們需要面對的數(shù)據(jù)就是圖書館中各種各樣的圖書信息,而這些藏書的信息可以被總結(jié)歸納為一張表格。
而我們拿到這樣一張表格,面對浩如煙海的藏書信息,我們能夠進行什么處理?
對于一個圖書管理系統(tǒng),我們所期待的數(shù)據(jù)處理,主要包括:輸入、輸出、查詢、排序……
具體到某一種操作,比如說順序查找、折半查找、索引查找等等,這些處理如何實現(xiàn)呢?或者說:這些操作的算法如何呢?

考慮好要處理的數(shù)據(jù),考慮好操作的實現(xiàn)方式,再結(jié)合語言基礎(chǔ),把中文表述翻譯成C語言,其實就是我們寫程序的過程。
從某種角度上看來,程序就是算法加數(shù)據(jù)結(jié)構(gòu)。
再比如,開發(fā)一個學(xué)生信息管理系統(tǒng)。處理的數(shù)據(jù)就變成了學(xué)生對應(yīng)的信息,但是對這些數(shù)據(jù)想要進行的操作還是換湯不換藥,無非就是增刪改查操作。從本質(zhì)上講,這個系統(tǒng)和圖書管理其實就是一回事。
從這兩個簡單的例子里面,應(yīng)該可以明顯地察覺到:我們所做的第一件事情,其實就是把實際問題抽象為數(shù)據(jù)模型。

只不過這種數(shù)學(xué)模型不是方程組,不是微分方程,而是一張表格,里面填滿了我們關(guān)心的數(shù)據(jù)指標,或者是一張圖,各個元素之間有某種指向,可以研究指向的規(guī)律。
經(jīng)研究發(fā)現(xiàn),從外表上形式千差萬別的數(shù)據(jù),如果按照數(shù)據(jù)間的鄰接關(guān)系來劃分,所有的數(shù)據(jù)一定可以歸為四種結(jié)構(gòu)之一:
(1)線性結(jié)構(gòu)這是一組數(shù)據(jù)的集合,它們之間存在這樣一種鄰接關(guān)系,第一條數(shù)據(jù)無前導(dǎo),最后一條數(shù)據(jù)無后繼,中間所有的元素滿足一前導(dǎo)一后繼的條件。
(2)樹狀結(jié)構(gòu)用圖示的方法表示像是一個家譜圖,圓圈可以表示數(shù)據(jù),而連線表示數(shù)據(jù)之間的鄰接關(guān)系。根據(jù)層次的不同,把數(shù)據(jù)分為前后。對樹狀結(jié)構(gòu),有一個最明顯的特征,最高的層次只有一個節(jié)點,它被稱為樹的根;對于中間層次,它只有一個前導(dǎo),而可以有多個后繼;對于最后一個層次,它同樣也是只有一個前導(dǎo),但是沒有后繼,也被形象地稱為葉子。
(3)圖結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))用圖示的方法表示更像是一個地圖,最明顯的特征是對于每一個節(jié)點而言,都有可能有多個前導(dǎo)多個后繼。
(4)集合結(jié)構(gòu)對于每一條數(shù)據(jù)而言,兩兩之間都沒有鄰接關(guān)系,所有數(shù)據(jù)散落在表格之中,每一條數(shù)據(jù)既無前導(dǎo),也沒有后繼。

學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),第一個步驟就是把繁雜的實際問題抽象為可以處理的數(shù)據(jù),而數(shù)據(jù)之間的關(guān)系又屬于這四種之一:一前導(dǎo)一后繼、一前導(dǎo)多后繼、多前導(dǎo)多后繼、無前導(dǎo)無后繼。
所以最后呢,就希望大家能夠通過專業(yè)知識的學(xué)習(xí),培養(yǎng)一種理論結(jié)合實際的聯(lián)想,有一種敏銳的直覺,通過事件快速定位所學(xué)知識。
感謝閱讀,學(xué)習(xí)使人強大!
自學(xué)C/C++編程難度很大,如果你想在大學(xué)更快提升自己的編程能力和編寫項目的水平,歡迎一起共同成長!

學(xué)習(xí)C/C++編程知識,提升C/C++編程能力,歡迎關(guān)注UP一起來成長!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程(含數(shù)據(jù)結(jié)構(gòu)相關(guān)教程),有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~