- 數據結構(Python語言描述)(第2版)
- (美)肯尼思·A.蘭伯特
- 1295字
- 2021-07-09 10:35:19
本書結構
本書通過循序漸進的方式推進,并且只有在需要的時候才會引入新概念。
第1章回顧Python編程的相關功能,這是用Python學習計算機科學的第二門課程里的編程和解決問題必需的。如果你有豐富的Python編程經驗,那么可以快速地瀏覽一遍這一章的內容;如果你是Python新手,那么可以通過這部分內容深入了解這門語言。
本書其余部分(第2~12章)涵蓋通常會包含在計算機科學的第二門課程里的主要主題,特別是抽象數據類型的規范、實現及應用等內容,并且會把多項集類型作為學習的主要工具和重點。在這些內容里,你將全面了解面向對象的編程技術以及好軟件的設計要素。本書還涉及計算機科學的第二門課程里其他一些重要的主題,例如數據的遞歸處理、搜索和排序算法以及軟件開發[復雜度分析或用在設計文檔里的圖形符號(UML)]里會用到的工具。
第2章介紹抽象數據類型(Abstract Data Type,ADT)的概念,并且對各種多項集中的抽象數據類型進行概覽。
第3章和第4章介紹實現大部分多項集的數據結構,并且介紹了一些用來進行復雜度分析的工具。第3章介紹使用大O表示法的復雜度分析。這部分內容包含了很多材料,用搜索和排序算法作為例子,對算法和數據結構的運行時以及內存使用情況進行了簡單分析。第4章介紹使用數組和線性鏈接結構的相關細節,這些數據結構用于實現大部分多項集。你將了解支持數組和鏈接結構的計算機內存的底層模型,以及使用它們所需要面對的時間/空間的權衡等內容。
第5章和第6章把關注點轉移到面向對象設計的原則上。這些原則在后續章節里用于構建多項集類的專家級框架。
第5章討論接口和實現之間的重要差異。開發包多項集的一個接口和多個實現作為展現這些差異的第一個例子。本章會將重點放在接口包含的通用方法上,允許不同類型的多項集在應用程序里進行協作,比如用來創建迭代器的方法。這個通用方法所創建的迭代器能夠通過簡單的循環來遍歷任何一個多項集。本章還會介紹多態以及信息隱藏,這些主題也會通過接口和實現之間的差異表現出來。
第6章介紹類的層次結構是如何減少面向對象軟件系統里的冗余代碼的,還會介紹繼承、方法調用的動態綁定以及抽象類的相關概念。這些概念會在后續章節里被反復使用。
在掌握這些概念和原則之后,你就可以開始學習第7~12章里其他重要的多項集抽象數據類型了。
第7~9章介紹棧、隊列以及列表。我們會先從用戶的角度進行介紹,以便你能了解所選實現里提供的接口以及一系列性能特征。我們會通過一個或多個應用程序說明每個多項集的用法,然后開發出這個多項集的若干種實現,并分析它們在性能上的權衡。
第10~12章介紹更高級的數據結構和算法,以便幫助你過渡到計算機科學里更高階的課程。第10章討論各種樹結構,如二叉查找樹、堆和表達式樹。第11章通過哈希策略研究無序集合、包、集合和字典的實現。第12章介紹圖和圖處理算法。
本書的特色在于呈現一個多項集類的專家級框架。你看到的不會是一系列毫不相關的多項集,而是每個多項集在整體框架里的相應位置。這種方法能夠讓你了解到多項集類型的共同點以及使用不同多項集類型的原因。同時,你會接觸到繼承和類的層次結構,而這正是面向對象的軟件設計的主題,雖然這些主題是這個級別的課程很少講解和體現的。
- 算法零基礎一本通(Python版)
- 實用防銹油配方與制備200例
- 數據結構習題精解(C語言實現+微課視頻)
- Android NDK Beginner’s Guide
- 編寫高質量代碼:改善C程序代碼的125個建議
- PhpStorm Cookbook
- Building RESTful Python Web Services
- The DevOps 2.5 Toolkit
- Raspberry Pi Home Automation with Arduino(Second Edition)
- Building Wireless Sensor Networks Using Arduino
- 軟件項目管理實用教程
- 深入淺出Python數據分析
- Elasticsearch Blueprints
- 計算機應用基礎案例教程(第二版)
- LibGDX Game Development By Example