本文行文思路結構
一. 寫此系列文章緣由
二. 相關概念表述
1. 數(shù)據(jù)結構的定義
2. 邏輯結構和存儲結構的對比
三. 基本數(shù)據(jù)結構的分類和列舉
四. 總結
一. 寫此系列文章緣由
之所以, 打算用Java語言再把基礎的數(shù)據(jù)結構實現(xiàn)一遍, 原因有以下幾點:
- 第一: 我們在學校里學的數(shù)據(jù)結構大多數(shù)都是C語言實現(xiàn)的, 作為要學習和從事Java開發(fā)的程序員, 這對Java基礎也是一次再學習和提升;
- 第二: 在課堂上所學, 大多數(shù)是以概念為主, 導致動手編程的能力嚴重下降, 理解如何實現(xiàn)和如何編碼, 都是同等重要的, 畢竟學習的內容最終還是要學以致用的!
- 第三: 基本的數(shù)據(jù)結構是后續(xù)學習算法的基石, 比如C++中的STL和Java中常用集合框架, 底層實現(xiàn)都是這些數(shù)據(jù)結構中的知識;
- 第四: 在未來的求職當中, 筆試和面試都少不了數(shù)據(jù)結構的問題.
哈哈, 廢話不多說了, 總之, 一句話 --- 數(shù)據(jù)結構, 包括算法設計, 這對從事軟件開發(fā)的人員來說, 是非常非常重要的!
二. 相關概念表述
1. 數(shù)據(jù)結構的定義
來自維基百科的定義
在計算機科學中,數(shù)據(jù)結構(英語:data structure)是計算機中存儲、組織數(shù)據(jù)的方式。
來自數(shù)據(jù)結構(C語言版, 嚴蔚敏著)此書的定義
數(shù)據(jù)結構(data structure)是相互之間存在一種或多種特定關系的數(shù)據(jù)元素的集合.
簡單而言, 因為計算機能快速處理大量的數(shù)據(jù), 而如何存儲數(shù)據(jù)就是一個問題, 數(shù)據(jù)結構就是用來解決這個問題的.
2. 邏輯結構和存儲結構的對比
在數(shù)據(jù)結構中, 有兩個概念非常重要, 就是邏輯結構和存儲結構. 可能你平時都在用, 但具體的概念不清楚.
邏輯結構: 數(shù)據(jù)元素之間的邏輯結構.
存儲結構: (也稱物理結構)數(shù)據(jù)結構在計算機中的表示.
簡單而言, 比如最常用的棧, 是后進先出的結構, 這就是一個邏輯結構; 它存儲在計算機中, 即可以用數(shù)組實現(xiàn), 也可以用鏈表來實現(xiàn), 所以, 用鏈表實現(xiàn)的棧, 其中, 這個鏈表就是一個存儲結構.
三. 基本數(shù)據(jù)結構的分類和列舉
根據(jù)數(shù)據(jù)元素之間關系的不同特性, 通常分為三種基本結構:
- 線性結構 (一對一)
- 樹形結構 (一對多)
- 圖狀結構 (多對多)
常見的數(shù)據(jù)結構列舉:
- 數(shù)組 (Array)
- 棧 (Stack)
- 隊列(Queue)
- 鏈表(Linked List)
- 樹(Tree)
- 圖(Graph)
- 堆(Heap)
- 散列表(Hash)
四. 總結
因為此文只是大概介紹我接下來要寫的內容, 所以沒有編碼的部分!
最后, 非常歡迎各位小伙伴評論和指點我的文章, 如果您覺得寫得還不太差勁或者對您有一丁點的幫助, 麻煩動個小手點個贊, 好人萌萌噠, 也很感謝您耐心認真地看完!