算法與數據結構

算法與數據結構

本書分為基本概念、簡單數據結構(線性表、棧、佇列)、複雜數據結構(樹、圖)和算法與數據結構套用(排序、查找、算法設計基礎)四部分,詳細介紹了常用數據結構和算法的基本概念及其不同的實現方法,對各種數據結構,討論了在不同存儲結構上實現線性和非線性結構的不同運算,並對算法設計的方法和技巧進行了介紹。

基本信息

內容簡介

本書概念清晰,邏輯嚴密,重點突出,將抽象的描述與具體的實現結

算法與數據結構算法與數據結構
合,便於教學,也使初學者容易掌握其重點內容,有利於自學。本書的算法描述和實現採用類c和C語言。

本書可以作為計算機科學與技術、信息與計算科學和相關專業的本科或大專教材。

目錄

第1章 緒論

1.1 數據結構的基本概念

1.1.1 數據結構的研究對象

1.1.2 數據結構的基本概念和基本術語

1.2 算法與數據結構

1.2.1 算法的概念

1.2.2 描述算法的方法

1.2.3 算法分析

1.3 JAVA面向對象知識

1.3.1 類及類的使用

1.3.2 程式入口及對象的使用

1.3.3 構造方法

1.3.4 抽象類、接口

1.3.5 多態

1.3.6 包和類庫的使用

1.3.7 equals方法、this、super

1.4 JAVA語言的數據類型及其算法描述要點

1.4.1 JAVA語言的基本數據類型概述

1.4.2 JAVA語言的數組和類數據類型

1.4.3 JAVA語言的arraylist

1.4.4 JAVA語言的函式

1.4.5 用JAVA語言驗證算法的方法

1.5 JAVA中adt規格與實現

1.6 一個JAVA套用實例

1.7 學習數據結構的意義和方法

學習要點

習題

上機練習

第2章 線性表

2.1 線性表的邏輯結構

2.1.1 線性表的定義

2.1.2 線性表的運算

2.1.3 線性表的抽象數據類型定義

2.2 線性表的順序存儲結構——順序表

2.2.1 順序表的定義

2.2.2 順序存儲結構的優缺點

2.2.3 順序表上的基本運算

2.3 線性表的鏈式存儲結構——鍊表

2.3.1 單鍊表的定義

2.3.2 單鍊表的JAVA表示

2.3.3 單鍊表的基本運算

2.3.4 循環鍊表和雙向鍊表

2.3.5 JAVA對鍊表的支持

2.4 數組

2.4.1 數組的定義與操作

2.4.2 數組的順序存儲結構

2.4.3 矩陣的壓縮存儲方法

2.5 字元串

2.5.1 字元串的定義與操作

2.5.2 字元串的存儲結構

2.5.3 字元串基本操作的實現

2.6 線性表的套用實例

2.7 工程套用實例

學習要點

習題

上機練習

第3章 棧和佇列

3.1 棧

3.1.1 棧的基本概念

3.1.2 棧的抽象數據類型

3.1.3 棧的順序存儲結構

3.1.4 棧的鏈式存儲結構

3.2 棧的套用實例

3.2.1 表達式求值

3.2.2 棧與函式調用

3.2.3 棧在回溯法中的套用

3.2.4 JAVA對棧的支持

3.3 佇列

3.3.1 佇列的基本概念

3.3.2 佇列的抽象數據類型

3.3.3 佇列的順序存儲結構

3.3.4 佇列的鏈式存儲結構

3.4 佇列的套用實例

3.4.1 舞伴問題

3.4.2 模擬列印佇列的管理

3.5 工程套用實例

3.5.1 棧的套用

3.5.2 佇列的套用

學習要點

習題

上機練習

第4章 遞歸

4.1 遞歸的概念及設計方法

4.1.1 遞歸模型

4.1.2 遞歸的執行過程

4.1.3 遞歸設計

4.1.4 遞歸到非遞歸的轉換

4.2 遞歸與回溯

4.3 遞歸技術套用實例

4.3.1 漢諾塔問題

4.3.2 組合數學:委員會問題

4.4 遞歸評價

4.5 工程套用實例

學習要點

習題

上機練習

第5章 樹

5.1 樹

5.1.1 樹的概念

5.1.2 樹的基本操作

5.2 二叉樹

5.2.1 二叉樹的概念

5.2.2 二叉樹的性質

5.2.3 二叉樹的存儲結構及其實現

5.3 二叉樹的遍歷

5.3.1 遞歸的遍歷算法

5.3.2 二叉樹遍歷操作套用舉例

5.4 線索二叉樹

5.4.1 線索二叉樹的定義

5.4.2 遍歷線索二叉樹

5.5 一般樹的表示和遍歷

5.5.1 一般樹的表示

5.5.2 二叉樹與樹之間的轉換

5.5.3 一般樹的遍歷

5.6 哈夫曼樹及其套用

5.6.1 哈夫曼樹

5.6.2 哈夫曼樹的套用

5.7 工程套用實例

學習要點

習題

上機練習

第6章 圖

6.1 圖的定義和術語

6.2 圖的存儲結構

6.2.1 鄰接矩陣

6.2.2 圖的鄰接表

6.2.3 十字鍊表

6.2.4 邊集數組

6.3 圖的遍歷

6.3.1 深度優先搜尋

6.3.2 廣度優先搜尋

6.4 圖的連通性

6.4.1 無向圖的連通分量

6.4.2 生成樹和最小代價生成樹

6.5 有向無環圖及套用

6.5.1 拓撲排序

6.5.2 關鍵路徑

6.6 最短路徑及套用

6.6.1 單源最短路徑

6.6.2 每個頂點之間的最短路徑

6.7 工程套用實例

學習要點

習題

上機練習

第7章 查找

7.1 基本概念與術語

7.2 靜態查找表

7.2.1 靜態查找表結構

7.2.2 順序查找

7.2.3 有序表的折半查找

7.2.4 有序表的插值查找和斐波那契查找

7.2.5 分塊查找

7.3 動態查找表

7.3.1 二叉排序樹

7.3.2 平衡二叉樹

7.3.3 b-樹和b+樹

7.4 哈希表查找

7.4.1 哈希表與哈希方法

7.4.2 常用的哈希函式

7.4.3 處理衝突的方法

7.4.4 哈希表的查找分析

學習要點

習題

上機練習

第8章 排序

8.1 基本概念

8.2 插入排序

8.2.1 直接插入排序

8.2.2 希爾排序

8.3 交換排序

8.3.1 冒泡排序

8.3.2 快速排序

8.4 選擇排序

8.4.1 簡單選擇排序

8.4.2 堆排序

8.5 歸併排序

8.6 基數排序

8.7 外部排序簡介

8.7.1 外存信息的存取

8.7.2 外部排序的基本方法

學習要點

習題

上機練習

參考文獻

文摘

第1章 緒論

算法與數據結構不僅是計算機科學與技術學科一門重要的基礎課程,也是許多後繼課程(如作業系統、資料庫和編譯原理等)的先修課程。它不僅是計算機專業學生的必修課程,也是許多非計算機專業學生了解和學習計算機的選修課。在高等院校中,不僅計算機專業,許多其他非計算機專業也開設這門課程。事實上,“算法與數據結構”已經成為學生了解和學習計算機的重要基礎課。

算法與數據結構是伴隨著計算機套用的普及與深入而產生的一門課程。早期的電子計算機是為數值計算而發明和設計的。套用在諸如彈道計算、天氣預報等領域。現在計算機的套用已經滲透到社會的各個領域,如信息處理、圖像識別、人工智慧和電子交易等。這些領域大部分都是非數值計算領域,例如圖像,其本質是人的感覺器官對客觀事物的反映。現在的計算機不僅可以表示圖像,而且可以存儲、傳輸甚至識別圖像。

算法與數據結構是研究現實世界中非數值計算問題的程式設計、信息的計算機表示、計算機操作對象以及它們之間的關係的學科。現實世界是繽紛複雜的,而計算機所能表示的只有0與1,其存儲器也是線性的,中央處理器本質上也只能做有限位的加法運算。算法與數據結構就像是橫架在現實世界和計算機世界之間的一座橋樑,是利用計算機解決實際問題不可缺少的工具。

離散數學也是以非數值問題為研究對象。與之相比,算法與數據結構更注重於算法的實現,而離散數學偏重於算法的理論。

1.1 利用計算機解決問題的幾個步驟

利用計算機解決問題可歸納為以下幾個步驟:

①分析實際的具體問題,從中抽象出一個適當的數學模型;

②設計一個求解此數學模型的算法;

③編制電腦程式實現此算法,最終得到解答。

相關詞條

相關搜尋

熱門詞條

聯絡我們