天天看點

[圖解資料結構之Java實作](0) --- 概要分析和目錄分類

一. 寫此系列文章緣由

之是以, 打算用Java語言再把基礎的資料結構實作一遍, 原因有以下幾點:

  • 第一: 我們在學校裡學的資料結構大多數都是C語言實作的, 作為要學習和從事Java開發的程式員, 這對Java基礎也是一次再學習和提升;
  • 第二: 在課堂上所學, 大多數是以概念為主, 導緻動手程式設計的能力嚴重下降, 了解如何實作和如何編碼, 都是同等重要的, 畢竟學習的内容最終還是要學以緻用的!
  • 第三: 基本的資料結構是後續學習算法的基石, 比如C++中的STL和Java中常用集合架構, 底層實作都是這些資料結構中的知識;
  • 第四: 在未來的求職當中, 筆試和面試都少不了資料結構的問題.

哈哈, 廢話不多說了, 總之, 一句話 — 資料結構, 包括算法設計, 這對從事軟體開發的人員來說, 是非常非常重要的!

二. 相關概念表述

1. 資料結構的定義

來自維基百科的定義

在計算機科學中,資料結構(英語:data structure)是計算機中存儲、組織資料的方式。

來自資料結構(C語言版, 嚴蔚敏著)此書的定義

資料結構(data structure)是互相之間存在一種或多種特定關系的資料元素的集合.

簡單而言, 因為計算機能快速處理大量的資料, 而如何存儲資料就是一個問題, 資料結構就是用來解決這個問題的.

2. 邏輯結構和存儲結構的對比

在資料結構中, 有兩個概念非常重要, 就是邏輯結構和存儲結構. 可能你平時都在用, 但具體的概念不清楚.

邏輯結構: 資料元素之間的邏輯結構.

存儲結構: (也稱實體結構)資料結構在計算機中的表示.

簡單而言, 比如最常用的棧, 是後進先出的結構, 這就是一個邏輯結構; 它存儲在計算機中, 即可以用數組實作, 也可以用連結清單來實作, 是以, 用連結清單實作的棧, 其中, 這個連結清單就是一個存儲結構.

三. 基本資料結構的分類和列舉

根據資料元素之間關系的不同特性, 通常分為三種基本結構:

  • 線性結構 (一對一)
  • 樹形結構 (一對多)
  • 圖狀結構 (多對多)

常見的資料結構列舉:

  • 數組 (Array)
  • 棧 (Stack)
  • 隊列(Queue)
  • 連結清單(Linked List)
  • 樹(Tree)
  • 圖(Graph)
  • 堆(Heap)
  • 散清單(Hash)

四. 總結

因為此文隻是大概介紹我接下來要寫的内容, 是以沒有編碼的部分! 個人部落格首頁

最後, 非常歡迎各位小夥伴評論和指點我的文章, 如果您覺得寫得還不太差勁或者對您有一丁點的幫助, 麻煩動個小手點個贊, 好人萌萌哒, 也很感謝您耐心認真地看完!

本文寫于 2017.05.10 13:00

繼續閱讀