本書以淺顯易懂方式介紹資料結構理論,並搭配階段式程式實作演練,讀者可配合理論進行程式設計演練,理論與實作互補。虛實整合,進階課程以及補充範例以雲端文本呈現,以QR Code供讀者掃描書下載,內容豐富又不過於厚重,物超所值。書中收錄國家考試重要考題與理論內容(如四分樹、B+樹、紅黑樹等)。
全書分為十二章,內容完整,架構清楚。第一、二章分別為資料結構概念與演算法概念,並針對演算法與複雜度以及程式效能分析等進行介紹;第三、四章分別針對陣列以及鏈結串列的特性、結構設計以及維護等面向說明,讓讀者理解靜態與動態資料結構的異同;第五、六章說明堆疊以及佇列結構的設計與維護機制;第七、八章闡述樹狀結構、二元搜尋樹及其高度平衡等觀念,這是物聯網以及人工智慧等範疇的重要基礎知識。
第九章說明圖形結構;第十章與第十一章分別講述資料的排序與搜尋等處理機制;第十二章介紹新興程式語言與資料結構的相關應用,並列舉Java語言以及R語言的特有資料結構設計實例。
對於程式能力較弱的學生或有興趣研讀資料結構的讀者,這本作者精心設計的「資料結構」,是建立基礎並能引導深入研讀的絕佳教材。
資料結構是演算法的一個好幫手,規劃好的資料結構,在撰寫程式時方能得心應手。本書談論程式內的資料如何運用變數,有效率的擺放在記憶體中,好讓演算法在運作時能得心應手,並說明演算法的利用方式,學習資料結構結合演算法的運作效果。
本書以教學為目的編寫,做為大專院校教科書,書中未提供「隨堂演練」及章末「作業」的解答,讀者需詳研該章內容,熟練書中示範解題的範例後自行演練解答。出版公司與銷售單位均無法提供解答給讀者,自學讀者選購前請確認知悉。
作者簡介:
陳木中
現職:
國立雲林科技大學 產業經營專業博士學位學程 助理教授
經歷:
吳鳳科技大學 資訊工程系 助理教授
明新科技大學 兼任講師
南亞技術學院 兼任講師
傑勛資訊有限公司 資訊長
陽程科技股份有限公司 物控課長
新普科技股份有限公司 生管主任
中國菱電股份有限公司 生管工程師
胡志堅
現職:
大同大學 資訊經營學系 助理教授
經歷:
國立雲林科技大學 助理教授
工業技術研究院 研究員
明新科技大學 兼任講師
春合昌股份有限公司 經理
仁寶電腦 產品經理
美台電訊 工程師
作者序
資料結構是資訊技術領域的重要學科,如果您想提升程式設計的技巧,資料結構絕對是必要選項。好的程式設計必須結合適切的資料結構與演算法,而要改善演算法的效率,規劃適當的資料結構,絕對能讓您在撰寫程式時得心應手。
資料結構主要探討程式如何有效取用資料,將其適當的擺放在記憶體中,使得演算法能夠妥善運作。但是,若只探討資料如何配置於記憶體,而缺乏論述演算法的運用機制,將無法觀察資料結構整合演算法所呈現的運作效果。因此,一般資料結構的書籍,除了介紹基礎概念,也經常直接引用程式介紹演算法的運作;如此,對於尚未具備程式設計能力的學習者、或是初學資料結構的讀者而言,恐怕無法有效掌握此學門的重要觀念。此外,資料結構的內容頗多,如何有結構化的編輯內容,兼顧學習上的彈性,亦是極為重要的考量。
基於上述原因,本書的編排具有四大特色:
1. 理論與實作互補:本書將資料結構理論以淺顯易懂方式介紹,對於需要撰寫程式的部分,除了以虛擬碼表示,並獨立列舉Java範例於相關章節的程式實作演練單元。
2. 階段式程式實作演練:程式範例之難易程度以題號順序排序,讀者可配合理論進行程式設計演練。Java 範例包含兩部分,單數題範例以實體文本方式呈現,強化基礎程式實作能力;雙數題範例存放於雲端,供進階延伸學習參考。
3. 虛實整合內容豐富:本書內容整合實體文本及雲端文本內容,將核心基礎知識印製於本書的實體文本;針對進階課程以及補充範例等,則採用雲端文本內容呈現,讀者可藉由QR Code下載文本或程式範例,強化學習。
4. 命題完整多元:著重理論基礎的讀者可以先研讀資料結構的理論,再進行程式實作。本書收錄國家考試的重要考題與理論內容(如四分樹、B+樹、紅黑樹等),可供讀者選讀,以力求完整。
本書各章節的編排內容,如下說明:
第一章及第二章分別為資料結構概念與演算法概念,除了著重於資料結構的基礎,並針對演算法與複雜度以及程式效能分析等進行介紹,讓讀者一覽資料結構相關領域的全貌。
第三章及第四章則分別針對陣列以及鏈結串列的特性、結構設計以及維護等面向說明,讓讀者理解靜態與動態資料結構的異同。
第五章與第六章針對堆疊以及佇列結構的設計與維護機制,詳加說明。第七章與第八章對於將從事資通訊領域的讀者尤其重要,樹狀結構、二元搜尋樹及其高度平衡等觀念,都是物聯網以及人工智慧等範疇的重要基礎知識。
第九章針對圖形結構進行說明,包含圖形結構的概念、圖形的表示法、圖形的巡訪方法,以及圖形的應用等。日常生活中,不論是行車導航系統、外送平台的配送規劃,或是捷運班次的排程等都離不開圖形結構,可見圖形結構的重要性了。
第十章與第十一章分別針對資料的排序與搜尋等處理機制進行說明,包括各種排序、搜尋方法,以及其演算法的介紹。
第十二章介紹新興程式語言與資料結構的相關應用,除了回顧上述各種資料結構外,同時說明程式語言與資料結構的發展與運用,並列舉Java語言以及R語言的特有資料結構設計實例。
最後,對於本書的完成與出版,除了感謝新文京開發出版股份有限公司全體同仁不辭辛勞的積極協助,同時也感謝江孟軒、林依庭兩位同學的多次校稿。針對書籍之編排與校稿上均力求正確完整,然筆者才疏學淺,謬誤之處在所難免,盼讀者、先進、專家及學者不吝指正。
陳木中、胡志堅 謹識
資料結構是資訊技術領域的重要學科,如果您想提升程式設計的技巧,資料結構絕對是必要選項。好的程式設計必須結合適切的資料結構與演算法,而要改善演算法的效率,規劃適當的資料結構,絕對能讓您在撰寫程式時得心應手。
資料結構主要探討程式如何有效取用資料,將其適當的擺放在記憶體中,使得演算法能夠妥善運作。但是,若只探討資料如何配置於記憶體,而缺乏論述演算法的運用機制,將無法觀察資料結構整合演算法所呈現的運作效果。因此,一般資料結構的書籍,除了介紹基礎概念,也經常直接引用程式介紹演算法的運作;如此,對於...
目錄
Chapter 01 資料結構概念
1-1 資料結構的定義
1-2 資料結構的議題
1-3 結構型態
1-4 指標
1-5 遞迴
1-6 資料結構圖
1-7 各種資料結構圖的呈現方式
1-8 資料結構圖的應用實例
作業
Chapter 02 演算法概念
2-1 演算法與複雜度
2-2 程式效能分析
作業
Chapter 03 陣列
3-1 陣列的定義與操作
3-2 陣列定址
3-3 陣列的應用
程式實作演練
作業
Chapter 04 鏈結串列
4-1 鏈結串列的概念
4-2 鏈結串列的操作
4-3 各種鏈結串列
4-4 鏈結串列的應用
程式實作演練
作業
Chapter 05 堆疊
5-1 堆疊的概念
5-2 堆疊以陣列實作
5-3 以鏈結串列實作堆疊
5-4 堆疊的應用
程式實作演練
作業
Chapter 06 佇列
6-1 佇列的概念
6-2 佇列以陣列實作
6-3 佇列以鏈結串列實作
6-4 其他佇列
程式實作演練
作業
Chapter 07 樹狀結構
7-1 樹的概念
7-2 二元樹
7-3 二元樹的表示方式
7-4 二元樹的走訪與一般運算
7-5 二元樹的決定與轉換
7-6 引線二元樹
7-7 堆積
7-8 二元樹應用
程式實作演練
作業
Chapter 08 二元搜尋樹及其高度平衡
8-1 二元搜尋樹
8-2 高度平衡二元樹AVL
8-3 2-3樹
8-4 2-3-4樹
8-5 紅黑樹
8-6 m元搜尋樹
8-7 B樹
8-8 B+樹
作業
Chapter 09 圖形結構
9-1 圖形結構的概念
9-2 圖形的表示法
9-3 圖形的巡訪方法
9-4 圖形的應用
作業
Chapter 10 排序
10-1 排序的概念
10-2 排序的方法
10-3 二元樹排序
10-4 堆積排序
程式實作演練
作業
Chapter 11 搜尋
11-1 搜尋的概念
11-2 搜尋的方法
11-3 雜湊法
程式實作演練
作業
Chapter 12 新興程式語言與資料結構
12-1 程式語言與資料結構
12-2 Java語言與資料結構
12-3 R語言與資料結構
作業
參考文獻
Chapter 01 資料結構概念
1-1 資料結構的定義
1-2 資料結構的議題
1-3 結構型態
1-4 指標
1-5 遞迴
1-6 資料結構圖
1-7 各種資料結構圖的呈現方式
1-8 資料結構圖的應用實例
作業
Chapter 02 演算法概念
2-1 演算法與複雜度
2-2 程式效能分析
作業
Chapter 03 陣列
3-1 陣列的定義與操作
3-2 陣列定址
3-3 陣列的應用
程式實作演練
作業
Chapter 04 鏈結串列
4-1 鏈結串列的概念
4-2 鏈結串列的操作
4-3 各種鏈結串列
4-4 鏈結串列的應用
程式實作演練
作業
Chapter 05 堆疊
5-1 堆疊的概念
5-2 堆疊以陣列實作
5-3 以鏈結串列實作堆疊...