對于計算機行業,說到資料處理,就不得不提到資料結構,它也是對軟體開發和考研都有非常非常重要作用的一門課程,
那么什么是資料結構?在這個問題之前,我們先來研究另外一個問題:計算機的作用是什么?
可以這樣簡單的總結為:計算機的作用就是通過各種各樣的程式,處理形式多樣的資料,
這里有兩個關鍵字,一個是資料,一個是處理,
所以我們可以進一步思考:我們要處理的資料又有哪些具體的形式?對于某種形式的資料可以進行怎樣的處理?
假如,我們想要開發一個圖書館的圖書管理系統,聯想我們提及的關鍵字,一個是資料,一個是處理,顯然,我們需要面對的資料就是圖書館中各種各樣的圖書資訊,而這些藏書的資訊可以被總結歸納為一張表格,
而我們拿到這樣一張表格,面對浩如煙海的藏書資訊,我們能夠進行什么處理?
對于一個圖書管理系統,我們所期待的資料處理,主要包括:輸入、輸出、查詢、排序……
具體到某一種操作,比如說順序查找、折半查找、索引查找等等,這些處理如何實作呢?或者說:這些操作的演算法如何呢?
考慮好要處理的資料,考慮好操作的實作方式,再結合語言基礎,把中文表述翻譯成C語言,其實就是我們寫程式的程序,
從某種角度上看來,程式就是演算法加資料結構,
再比如,開發一個學生資訊管理系統,處理的資料就變成了學生對應的資訊,但是對這些資料想要進行的操作還是換湯不換藥,無非就是增刪改查操作,從本質上講,這個系統和圖書管理其實就是一回事,
從這兩個簡單的例子里面,應該可以明顯地察覺到:我們所做的第一件事情,其實就是把實際問題抽象為資料模型,
只不過這種數學模型不是方程組,不是微分方程,而是一張表格,里面填滿了我們關心的資料指標,或者是一張圖,各個元素之間有某種指向,可以研究指向的規律,
經研究發現,從外表上形式千差萬別的資料,如果按照資料間的鄰接關系來劃分,所有的資料一定可以歸為四種結構之一:
(1)線性結構這是一組資料的集合,它們之間存在這樣一種鄰接關系,第一條資料無前導,最后一條資料無后繼,中間所有的元素滿足一前導一后繼的條件,
(2)樹狀結構用圖示的方法表示像是一個家譜圖,圓圈可以表示資料,而連線表示資料之間的鄰接關系,根據層次的不同,把資料分為前后,對樹狀結構,有一個最明顯的特征,最高的層次只有一個節點,它被稱為樹的根;對于中間層次,它只有一個前導,而可以有多個后繼;對于最后一個層次,它同樣也是只有一個前導,但是沒有后繼,也被形象地稱為葉子,
(3)圖結構(網狀結構)用圖示的方法表示更像是一個地圖,最明顯的特征是對于每一個節點而言,都有可能有多個前導多個后繼,
(4)集合結構對于每一條資料而言,兩兩之間都沒有鄰接關系,所有資料散落在表格之中,每一條資料既無前導,也沒有后繼,
學習資料結構,第一個步驟就是把繁雜的實際問題抽象為可以處理的資料,而資料之間的關系又屬于這四種之一:一前導一后繼、一前導多后繼、多前導多后繼、無前導無后繼,
所以最后呢,就希望大家能夠通過專業知識的學習,培養一種理論結合實際的聯想,有一種敏銳的直覺,通過事件快速定位所學知識,
感謝閱讀,學習使人強大!
自學C/C++編程難度很大,如果你想在大學更快提升自己的編程能力和撰寫專案的水平,歡迎一起共同成長!
C語言C++編程學習交流圈子,QQ群【757874045點擊進入】微信公眾號:C語言編程學習基地
有一些原始碼和資料分享,歡迎轉行也學習編程的伙伴,和大家一起交流成長會比自己琢磨更快哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/144592.html
標籤:其他
上一篇:A. Peter and Snow Blower 決議(思維、幾何)
下一篇:A collection of classic programming problems (constantly updating)
