關於資料結構

最近決定好好回頭打好基礎,認真的研究演算法和資料結構,事實上,這本來就是我程式當中最有興趣的領域,只不過之前我的首要目標是熟悉寫程式這件事,沒空把重心放在這部份,現在比較有空了,就決定好好把筆記整理在這裡,畢竟當初是因為喜歡數學才決定來寫程式的咩!

資訊科系出身的人,大概會覺得我的筆記內容好像是寫給白癡(我?)看的,不過沒辦法,我們這些非本科系的得靠自己的方式來學習,專業科系寫出來的內容我怎麼看都覺得不太像是人話,所以還得奮力消化轉換成自己理解的語言。

資料結構概說 –

資料結構可分為哪兩部分?
基元資料(Primitive data)
字元、整數與實數以及位元編碼表示方法
非基元資料結構(Non primitive data structure)
  • 線性(Linear) -> 串列List(陣列),堆疊Stack(遞迴),佇列Queue
  • 非線性(Nonlinear) -> 圖Graph,樹Tree(例如作業系統的樹狀檔案結構)
建立資料結構的目的?
資料的結構在一個有用並且有效率的應用程式扮演重要的角色,相同的演算法 在不同的資料結構下,常常造成極為不同的執行效率

  1. 程式執行速度快
  2. 資料佔用最少的記憶空間
  3. 更快速的存取這些資料
資料結構有那些表示的方法?
  1. 靜態的(Static)表示法:資料結構的組織與大小是固定的。對於程式設計者來說,這種表示法會面臨一些困難,因為一旦資料結構的大小固定下來,處理比較多的資料可能不夠用,處理的資料少,卻又浪費了資源。
  2. 動態的(dynamic)表示法:利用動態變數(Dynamic variable)的觀念,可以不設定資料結構的大小,需要處理的資料多的時候,就建立較大的資料結構,不需要處理那麼多資料時,就把資源還給作業系統。指標(Pointer)是最常用來表示動態變數的程式語言結構,像圖8-3裡的動態序列(Dynamic list),系統只要知道序列中第一個元素的位址,也就是某個指標的值,就可以找到序列中的其他元素。新增或刪除序列中的元素會改變整個資料結構的大小,但對於使用者而言並不需要做特別的處理。

本段資料摘錄自:資料結構的定義

資料結構可分哪四種基本的關係?
  1. 遞迴Recursion
  2. 串列List
  3. 堆疊Stack
  4. 佇列Queue

延伸閱讀

實用網站

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s