iT邦幫忙

2026 iThome 鐵人賽

DAY 1
0
Software Development

從0開始的資料結構旅程!系列 第 1

Day1 - 前言& 什麼是資料結構

  • 分享至 

  • xImage
  •  

我先來自我介紹一下! 我是Nina 目前要升大二,為了減緩我暑假的焦慮決定來報名這次的IT鐵人賽順便磨練自己,第一次參加鐵人賽請多指教

選此次的主題是想說趁著升大二的暑假來自學一點下學期的內容
本次會搭配實作
因為本人還只是程式小白,並不是什麼很厲害的大神
所以如果有錯誤的地方還請各位大大幫忙修正@@


那就來開始吧!

什麼是資料結構

簡單來說資料結構就是幫助你電腦裡的資料安排的儲存組織方式

舉例來說:

假設你有一堆書(資料),你的擺放方式=結構

  • 陣列(Array):把書排成一排,幫每本書訂一個編號,找特定的書很方便,但是如果中間要插入一本書,後面的書就要往後挪
    image

  • 堆疊(stack):直接把書疊成一疊,要拿的話只能拿最上面的書,為後進先出(Last in, First out, LIFO)
    image


認識結構前先認識資料型態 !

那資料結構一定會有資料對吧,資料在電腦裡會有儲存的型態
那以下為常見的資料型態(以C++為例)

1. 基本資料型態

不能以其餘的資料型態來定義,以下為常見例子

int //整數型態
float//浮點數
double//倍精度浮點數 比float精度更高
char//字元
bool//布林值

2. 結構化資料型態

比基本資料型態更高一層的資料型態
如字串(string),陣列(array),指標(pointer),堆疊(stack),檔案(file)...等。

3. 抽象資料型態(Abstract Data Type)

抽象資料型態(Abstract Data Type, ADT)描述的是資料應該具備哪些操作與行為,而不關心底層如何實作。例如 Queue 定義了 FIFO 的行為,而陣列或鏈結串列都可以作為實作 Queue 的方式。

認識完資料來認識結構吧!

常見的資料結構有

  • 非線性資料結構
    • 樹狀結構 :樹(Tree),堆積(Heap)
    • 網狀結構 :圖(Graph)
  • 線性資料結構
    • 陣列(Array)、鏈結串列(Linked list)、堆疊(Stack)、佇列(Queue)

那麼講了那麼多,到底為什麼要用資料結構呢?

為了幫助你的程式不只是能跑而已,還跑得又快又好,當你程式規模越來越大時,或許就會對那些能跑但跑很慢的程式感到困惑
資料結構總結來說就是能幫助你把

  1. 執行效率 (時間複雜度)
  2. 記憶體空間 (空間複雜度)

都有所加強的東西:)
By the way其實我覺得還要搭配演算法啦,之後會提到


參考資料與書籍

  1. 圖解資料結構×演算法:運用C++ 胡昭明
  2. [Hello 算法] https://www.hello-algo.com/zh-hant/chapter_data_structure/classification_of_data_structure/#311

下一篇
Day 2 - 什麼是演算法?
系列文
從0開始的資料結構旅程!4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言