本書共9章,圍繞線性表、棧和隊列、字符串、矩陣和廣義表、樹和二叉樹、圖等典型數據結構,介紹了基本概念、邏輯結構、存儲結構、操作運算及算法實現、算法分析、案例應用,以及查找和排序這兩種最基本操作的多種算法實現方法及性能分析。書中使用C語言定義各種數據結構,使用C/C 代碼描述算法。
本書的每章以若干典型的導學案例為主線,由知識學習能力培養(yǎng)和能力提高等部分組成。圍繞導學案例,引導學習者思考問題、對實際問題進行抽象建模、實現模型和應用模型。每章均附有小結、思考與練習、應用實戰(zhàn)和學習目標檢驗。附錄給出了考研考試大綱(數據結構部分)、Visual Studio 2022集成開發(fā)環(huán)境的安裝與使用。同時,配套提供了課程期中考試和期末考試樣卷(共3套)、課程設計題、實驗及課程設計報告模板、學習資源鏈接,以及思考與練習參考解答等資源。
本書可作為高等院校計算機科學與技術、軟件工程等相關專業(yè)數據結構課程的教材,以及研究生入學考試輔助用書,也可供計算機軟件開發(fā)人員或編程愛好者參考和使用。
國家 級一流本科課程數據結構配套教材。
采用問題導學模式,以問題解決為主線,以學生學習為主體,幫助學生在解決問題的過程中掌握知識、培養(yǎng)能力、發(fā)展思維的教學模式。
面向新工科建設和發(fā)展需求,緊密跟蹤人工智能、大數據等IT新技術及應用,對部分案例做了更新。
充分挖掘問題解決和算法設計與實現中的思政元素,將之有機地融入學習任務中,使學習者在潛移默化中受到教育。
根據《全國碩士研究生招生考試考試大綱》的新要求,增加了紅黑樹、外部排序、并查集等內容,增加了近幾年的聯考真題、IT面試真題、藍橋杯軟件設計大賽試題等。
配套提供電子課件、知識點視頻、課程期中考試和期末考試樣卷、課程設計題、實驗及課程設計報告模板、思考與練習參考解答等資源。
數據結構是高等院校計算機科學與技術、軟件工程等相關專業(yè)的核心課程之一,是計算機科學與技術、軟件工程等專業(yè)研究生考試的必考科目之一,也是IT公司面試和筆試考核的主要內容。數據結構主要分析計算機中數據組織的方式和相關操作算法,涉及數據的存儲結構和算法的基本概念與技術,包括線性表、棧和隊列、字符串、矩陣和廣義表、樹和二叉樹、圖等常用數據結構及相關算法,以及排序和查找等算法技術。本課程既是對前導的程序設計類課程、離散數學等課程的深入和拓展,也為深入學習數據庫、操作系統(tǒng)、計算機網絡等后續(xù)專業(yè)課程奠定了必要的理論與實踐基礎。
本書第1版出版迄今已逾8年,受到了廣大讀者的歡迎,被百余所高校選為教材。這幾年隨著我們主講的國家級一流本科課程數據結構的建設,本書從內容組織、體例編排和配套資源三大方面進行了修訂與完善。
(1)更新全書內容,引導創(chuàng)新思維
數據結構是一門直接面向實際應用、解決實際問題的課程,它的教學目標是讓學習者學會從復雜工程問題入手,分析研究計算機加工的數據結構的特性,以便能為實際問題所涉及的數據選擇適當的邏輯結構、存儲結構及其相應的操作算法,并掌握時間和空間復雜度分析技術。
編者從事數據結構課程的教學近30年,深切了解學習者對于學習數據結構課程的普遍體會:概念難理解、算法難設計、編程難實現、知識難應用。如何幫助學習者實現兩個跨越從實際應用問題到數據結構抽象的跨越和從數據結構概念到程序實現的跨越,是我們一直努力的目標。
本書第1版采用了問題導學模式,這是一種以導學案例創(chuàng)設學習情境,以問題解決為主線,以學生學習為主體,幫助學生在解決問題的過程中掌握知識、培養(yǎng)能力、發(fā)展思維的教學模式。本次修訂在此基礎上對內容又做了更新和完善,主要體現在以下5個方面。
1)更新了部分導學案例。面向新工科建設和發(fā)展需求,緊密跟蹤人工智能、大數據等IT新技術及應用,對部分案例做了更新。例如,第4章字符串中網絡不良信息過濾案例,第5章矩陣的個性化推薦系統(tǒng)中的用戶評分表案例,第9章排序的網絡購物中的商品排序案例等。
2)重新組織了教學內容。每章以若干典型的導學案例為主線,由知識學習能力培養(yǎng)和能力提高等部分組成。淺入深出、循序漸進,引導學習者分析案例問題中的已知信息,提煉數據及數據之間的關系(數據的邏輯結構),選擇合適的存儲方式(數據的存儲結構)將待處理的數據保存到計算機中,然后在存儲結構之上按照自頂向下逐步細化的方法設計算法,給出程序實現,并進行測試和調試分析。
3)有機融入了思政元素。本書在注重算法能力培養(yǎng)的同時也注重價值引領,充分挖掘問題解決和算法設計與實現中的思政元素,將之有機地融入學習任務中,使學習者在潛移默化中受到教育,培養(yǎng)其社會責任感、政治認同感,塑造其價值觀和人生觀,提升其文化素養(yǎng)、法制意識和道德修養(yǎng),啟迪他們關注國家、社會發(fā)展中的現實問題,善于進行問題抽象、設計及實現,激發(fā)問題發(fā)現、不懈探究等意識,培養(yǎng)其工匠精神和創(chuàng)新精神。每章最后增加了從知識、能力、素養(yǎng)、思政4個方面給出的學習目標檢驗表。
4)緊扣考研大綱。本書服務升學求職的實際需求,根據《全國碩士研究生招生考試計算機科學與技術學科聯考計算機學科專業(yè)基礎綜合考試大綱》的新要求,增加了紅黑樹、外部排序、并查集等內容,課后思考與練習增加了近幾年的聯考真題、IT面試真題、藍橋杯軟件設計大賽試題等,既適合參加全國聯考的考生及參加院校自主命題的考生進行學習和考試準備,也適用于備戰(zhàn)IT行業(yè)求職面試、計算機程序設計與算法競賽。全書設置了選擇題、填空題、簡答題、算法設計題、應用實戰(zhàn)題等多種類型的題目,約400道。同時給出了3套期中和期末考試樣卷供學生自測和教師選用,以及計算機程序設計能力測試及學習資源鏈接,還有思考與練習題較詳細的解答,有助于學習者自主學習和提高。
5)強化了數據結構要素。數據的邏輯結構、存儲結構和操作算法是數據結構的3個要素。本書在內容組織和介紹的過程中強化了這3個要素,學習者能更加深刻地理解數據結構的概念并熟練應用于解決實際問題。有關邏輯結構在基于數組(順序存儲)和鏈表(鏈式存儲)這兩種存儲方式下所設計形成的多種存儲結構見下表,有關經典算法設計策略介紹的安排見下面的知識圖譜。章節(jié)數據結構要素關系特點邏輯結構基本存儲結構實際常見存儲結構23456789數據元素關系線性的結構數據元素關系分層的非線性結構數據元素關系任意的非線性結構數據元素處理數據元素處理線性操作受限操作受限元素特殊元素擴展元素擴展分層任意線性表棧隊列字符串矩陣廣義表樹二叉樹圖查找排序數組(順序存儲)
鏈表(鏈式存儲)順序表或鏈表順序棧或鏈棧順序隊列或鏈隊列字符數組二維數組、三元組和十字鏈表擴展鏈表雙親表示法、多叉鏈表、孩子
鏈表、孩子兄弟、并查集一維數組、二叉鏈表、堆鄰接矩陣、鄰接表、逆鄰接表順序表、索引表、哈希表順序表、堆、敗者樹
(2)創(chuàng)新編寫體例,激發(fā)理性思維
本書注重對學習者理性思維的引導。按照建構主義的學
陳波,南京師范大學計算機與電子信息學院/人工智能學院副院長、教授。江蘇省首批課程思政示范課主持人。主要研究方向是信息安全和智慧教育。主持、參與多項國家級和省部級科研項目以及應用科技開發(fā)項目,發(fā)表科研論文80多篇,獲得軟件著作權、國家發(fā)明專利多項。獲江蘇省科技進步三等獎和解放軍全軍科技進步三等獎各1項。主持完成、江蘇省教育教學研究課題10多項,發(fā)表CSSCI等教學研究論文20多篇。國家一流本科專業(yè)建設點學院負責人,主講的數據結構課程獲批國家一流課程。主講的移動互聯網時代的信息安全防護獲評江蘇省課程思政示范課程、江蘇省中小學教師培訓優(yōu)秀網絡課程、江蘇省在線開放課程,受眾超30萬人。
前言
第1章緒論
導學案例1:數據在計算機中如何組織
導學案例2:程序的效率如何改進
11知識學習
111數據結構課程的研究內容
112數據的結構
113算法與算法分析
12能力培養(yǎng)
121導學案例問題1-4、1-5和1-6的數據結構
122導學案例2的時間復雜度
13能力提高
131算法時間復雜度分析
132算法執(zhí)行時間測試
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第2章數據元素關系線性的結構:線性表
導學案例1:實現一個簡易的學生信息管理系統(tǒng)
導學案例2:實現一個簡易的物資信息管理系統(tǒng)
21知識學習
211線性表的概念
212線性表的順序存儲及基本操作
213線性表的鏈式存儲及基本操作
22能力培養(yǎng)
221導學案例1的順序表實現
222導學案例1的單鏈表實現
23能力提高
231順序表的其他操作
232單鏈表的其他操作
233順序表和單鏈表的綜合比較
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第3章操作受限的線性表:棧和隊列
導學案例1:數制轉換
導學案例2:排隊叫號系統(tǒng)
31知識學習
311棧
312隊列
32能力培養(yǎng)
321導學案例1的實現
322導學案例2的實現
33能力提高
331棧的其他應用
332隊列的其他應用
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第4章數據元素特殊的線性表:字符串
導學案例:網絡不良信息過濾
41知識學習
411字符串的概念
412字符串的存儲結構
413字符串的操作算法
42能力培養(yǎng):導學案例的實現
43能力提高:KMP模式匹配算法
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第5章數據元素擴展的線性表:矩陣和廣義表
導學案例1:個性化推薦系統(tǒng)中的用戶評分表
導學案例2:本科生創(chuàng)新實踐項目中的人員關系
51知識學習
511矩陣
512廣義表
52能力培養(yǎng)
521導學案例1的矩陣實現
522導學案例2的廣義表實現
53能力提高
531稀疏矩陣的轉置操作
532廣義表的其他操作
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第6章數據元素關系分層的非線性結構:樹和二叉樹
導學案例1:查找U盤中文件的存儲路徑
導學案例2:對表達式樹表示的算術表達式求值
導學案例3:壓縮編碼
61知識學習
611樹
612二叉樹
613樹、森林與二叉樹的轉換
62能力培養(yǎng)
621導學案例1的實現
622導學案例2的實現
63能力提高
631二叉樹的其他操作
632線索二叉樹
633Huffman樹與Huffman編碼
634等價類與并查集
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第7章數據元素關系任意的非線性結構:圖
導學案例1:構建最小造價通信網
導學案例2:設計簡單的旅游交通費用查詢軟件
71知識學習
711圖的基本概念
712圖的存儲結構
713圖的遍歷
714最小生成樹
715最短路徑
72能力培養(yǎng)
721導學案例1的實現
722導學案例2的實現
73能力提高
731AOV網與拓撲排序
732AOE網與關鍵路徑
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第8章數據元素處理1:查找導學案例:簡單通訊錄查詢
81知識學習
811查找的基本概念
812靜態(tài)查找
813動態(tài)查找
82能力培養(yǎng):導學案例的實現
83能力提高
831索引的概念
832索引結構的查找
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
第9章數據元素處理2:排序導學案例:網絡購物中的商品排序
91知識學習
911排序的基本概念
912交換類排序
913插入類排序
914選擇類排序
915歸并類排序
916分配類排序
92能力培養(yǎng):導學案例的實現
93能力提高
931冒泡排序的改進
932外部排序
933排序算法總結
本章小結
思考與練習
應用實戰(zhàn)
學習目標檢驗
附錄
附錄A計算機學科專業(yè)基礎考試大綱(數據結構部分)
附錄BVisual Studio 2022集成開發(fā)環(huán)境的安裝與使用
參考文獻