Data Structures, Algorithms, & Software Principles in C
暫譯: C語言中的資料結構、演算法與軟體原則
Thomas A. Standish
- 出版商: Addison Wesley
- 出版日期: 1994-09-30
- 售價: $882
- 語言: 英文
- 頁數: 768
- 裝訂: Paperback
- ISBN: 0201591189
- ISBN-13: 9780201591187
-
相關分類:
Algorithms-data-structures
無法訂購
買這商品的人也買了...
-
$7,410$7,040 -
$480$379 -
$2,660$2,527 -
$882e-Business 2.0: Roadmap for Success, 2/e
-
$980$774 -
$970Introduction to Algorithms, 2/e
-
$1,150$1,127 -
$1,029Interaction Design Beyond Human-computer interaction
-
$880$695 -
$1,029The Intel Microprocessors 8086/8088, 80186/80188, 80286, 80386, 80486, 6/e
-
$1,029Operating System Concepts, 6/e (Windows XP Update)
-
$1,900$1,805 -
$1,650$1,568 -
$620$527 -
$780$741 -
$833Optics: An Introduction for Technicians and Technologists (Paperback)
-
$931Computers, 12/e (IE)
-
$350$298 -
$790$774 -
$620$490 -
$600$588 -
$450$356 -
$570$542 -
$560$476 -
$480$470
商品描述
Description
Using C, this book develops the concepts and theory of data structures and algorithm analysis in a gradual, step-by-step manner, proceeding from concrete examples to abstract principles. Standish covers a wide range of both traditional and contemporary software engineering topics. The text also includes an introduction to object-oriented programming using C++. By introducing recurring themes such as levels of abstraction, recursion, efficiency, representation and trade-offs, the author unifies the material throughout. Mathematical foundations can be incorporated at a variety of depths, allowing the appropriate amount of math for each user.
Table Of Contents
(All chapters, except Chapter 1, begin with an Introduction and Motivation.)
1. Preparing for the Journey.
Blending Mathematics, Science, and Engineering.
The Search for Enduring Principles in Computer Science.
Principles of Software System Structure.
Efficiency and Tradeoffs.
Software Engineering Principles.
Our Approach to Mathematics.
Some Notes on Programming Notation.
Preview of Coming Attractions.
2. Linked Data Representations.
Pointers in C—The Rudiments.
Pointer Diagramming Notation.
Linear Linked Lists.
Other Linked Data Structures.
3. Introduction to Recursion.
Common Pitfall—Infinite Regresses.
Quantitative Aspects of Recursive Algorithms.
4. Modularity and Data Abstraction.
Priority Queues—An Abstract Data Type.
A Pocket Calculator Interface.
How to Hide Data Representations.
Modularity and Information Hiding in Program Design.
5. Introduction to Software Engineering Concepts.
Proving Programs Correct.
Transforming and Optimizing Programs.
Testing Programs.
The Philosophy of Measurement and Tuning.
Software Reuse and Bottom-up Programming.
Program Structuring and Documentation.
6. Introduction to Analysis of Algorithms.
The Intuition Behind O-Notation.
O-Notation—Definition and Manipulation.
Analyzing Simple Algorithms.
What O-Notation Doesn't Tell You.
7. Linear Data Structures—Stacks and Queues.
ADTs for Stacks and Queues.
Using the Stack ADT to Check for Balanced Parentheses.
Using the Stack ADT to Evaluate Postfix Expressions.
Implementing the Stack ADT.
How C Implements Recursive Function Calls Using Stacks.
Implementations of the Queue ADT.
More Queue Applications.
8. Lists, Strings, and Dynamic Memory Allocation.
Generalized Lists.
Applications of Generalized Lists.
Strings.
Dynamic Memory Allocation.
9. Trees.
Binary Trees.
A Sequential Binary Tree Representation.
An Application—Heaps and Priority Queues.
Traversing Binary Trees.
Binary Search Trees.
AVL Trees and Their Performance.
Two-Three Trees.
Tries.
An Application—Huffman Codes.
10. Graphs.
Graph Representations.
Graph Searching.
Topological Ordering.
Shortest Paths.
Task Networks.
Useful Background on Graphs.
11. Hashing and the Table ADT.
Introduction to Hashing by Simple Examples.
Collisions, Load Factors, and Clusters.
Algorithms for Hashing by Open Addressing.
Choosing a Hash Function.
Comparison of Searching Methods Using the Table ADT.
12. External Collections of Data.
Techniques That Don't Work Well.
Techniques That Work Well.
Information Retrieval and Databases.
13. Sorting.
Priority Queue Sorting Methods.
Divide-and-Conquer Methods.
Methods That Insert Keys and Keep Them Sorted.
O(n) Methods—Address Calculation Sorting.
Other Methods.
Comparison and Perspective.
14. Advanced Recursion.
Using Recursion to Build a Parser.
Translating from Infix to Postfix.
Recursion and Program Verification.
15. Object-Oriented Programming.
Building Systems Using Object-Oriented Programming.
Advantages and Disadvantages of Object-Oriented Programming.
16. Advanced Software Engineering Concepts.
Software Productivity.
Software Process Models.
Appendix Math Reference and Tutorial. 0201591189T04062001

商品描述(中文翻譯)
描述
本書使用 C 語言逐步發展資料結構和演算法分析的概念與理論,從具體範例進入抽象原則。Standish 涵蓋了廣泛的傳統與當代軟體工程主題。文本中還包括使用 C++ 的物件導向程式設計介紹。透過引入抽象層次、遞迴、效率、表示法和取捨等重複主題,作者統一了整體內容。數學基礎可以根據不同深度融入,讓每位使用者獲得適當的數學知識。
目錄
(所有章節,除了第一章,均以介紹和動機開始。)
1. 準備出發之旅。
我們要去哪裡?
數學、科學與工程的融合。
尋找計算機科學中的持久原則。
軟體系統結構的原則。
效率與取捨。
軟體工程原則。
我們對數學的看法。
程式設計符號的一些說明。
即將到來的內容預覽。
2. 鏈結資料表示法。
什麼是指標?基本直覺。
C 語言中的指標——基礎知識。
指標圖示符號。
線性鏈結串列。
其他鏈結資料結構。
3. 遞迴介紹。
遞迴思考。
常見陷阱——無限回歸。
遞迴演算法的定量方面。
4. 模組化與資料抽象。
C 模組的結構。
優先佇列——一種抽象資料型別。
口袋計算機介面。
如何隱藏資料表示法。
程式設計中的模組化與資訊隱藏。
5. 軟體工程概念介紹。
逐步精煉的自上而下程式設計。
證明程式正確性。
轉換與優化程式。
測試程式。
測量與調整的哲學。
軟體重用與自下而上的程式設計。
程式結構與文件編寫。
6. 演算法分析介紹。
我們用什麼作為標準?
O-表示法的直覺。
O-表示法——定義與操作。
分析簡單演算法。
O-表示法未告訴你的事。
7. 線性資料結構——堆疊與佇列。
堆疊的背景知識。
堆疊與佇列的抽象資料型別。
使用堆疊 ADT 檢查平衡括號。
使用堆疊 ADT 評估後綴表達式。
實作堆疊 ADT。
C 語言如何使用堆疊實作遞迴函數呼叫。
佇列 ADT 的實作。
更多佇列應用。
8. 列表、字串與動態記憶體分配。
列表。
一般化列表。
一般化列表的應用。
字串。
動態記憶體分配。
9. 樹。
基本概念與術語。
二元樹。
一種序列二元樹表示法。
一個應用——堆與優先佇列。
遍歷二元樹。
二元搜尋樹。
AVL 樹及其效能。
二三樹。
Trie。
一個應用——霍夫曼編碼。
10. 圖。
基本概念與術語。
圖的表示法。
圖的搜尋。
拓撲排序。
最短路徑。
任務網絡。
圖的有用背景知識。
11. 雜湊與表格 ADT。
表格 ADT。
透過簡單範例介紹雜湊。
碰撞、負載因子與聚集。
開放定址的雜湊演算法。
選擇雜湊函數。
使用表格 ADT 的搜尋方法比較。
12. 外部資料集合。
外部儲存裝置的特性。
不太有效的技術。
有效的技術。
資訊檢索與資料庫。
13. 排序。
打下基礎。
優先佇列排序方法。
分而治之的方法。
插入鍵並保持排序的方法。
O(n) 方法——地址計算排序。
其他方法。
比較與觀點。
14. 進階遞迴。
遞迴作為描述方法。
使用遞迴建立解析器。
從中序轉換為後序。
遞迴與程式驗證。
15. 物件導向程式設計。
透過漸進範例探索 OOP。
使用物件導向程式設計構建系統。
物件導向程式設計的優缺點。
16. 進階軟體工程概念。
軟體生命週期。
軟體生產力。
軟體過程模型。
附錄 數學參考與教程。 0201591189T04062001