- 數據結構:Python語言描述
- 張光河
- 1289字
- 2020-05-20 09:26:31
前言
數據結構在計算機及相關專業中的地位是不言而喻的,學好這門課對學生日后在IT行業工作大有裨益。Python具有足夠的抽象性,非常適合描述數據結構,因此,基于Python來討論數據結構中的基本問題是一件值得嘗試的事情,國外不少大學已經將其作為代替C語言的教學語言,國內部分學校也在嘗試調整教學計劃,以適應這一趨勢。
在教學中,我注意到以下情況:學生使用基于偽語言描述的數據結構教材時,常常難于將其用自己熟悉的語言實現,從而使學習激情湮滅;而在使用基于C語言描述的數據結構教材時,又因為對C語言中指針和結構體掌握不好,無法理解教材提供的源程序,也無法調試和運行這些程序,更談不上自己用C語言將其實現;在使用基于C++和Java語言描述的數據結構教材時,學生感覺難度更大。
本書共9章:第1章介紹數據結構的概念和相關術語,并對算法的性能評價進行簡要說明;第2章介紹線性表及應用;第3章重點介紹棧和隊列,并介紹如何利用棧來將遞歸算法轉換為非遞歸形式;第4章重點介紹串,并簡要介紹了數組和廣義表的存儲;第5章首先介紹樹,然后重點介紹二叉樹的定義及相關操作,最后再引出森林的概念;第6章介紹圖及其典型應用,如最短路徑和關鍵路徑;第7章介紹查找,包括基于靜態查找表的查找和基于動態查找表的查找;第8章和第9章分別介紹了內排序和外排序,對一些常用的排序算法進行了詳細的描述,并進行了效率分析。本書的特點如下。
(1)每章除了相應的知識內容之外,還包括基礎實驗、綜合實驗和習題。現在市面上有些教材偏重于理論的講解,對于實驗教學這一方面,通常由教師自行解決。本書為每一章提供了一定數量的基礎實驗和綜合實驗,用于解決在實驗教學時教師和學生“無米下鍋”的尷尬,同樣,適量的習題也有助于學生檢測自己是否真正掌握了某一知識點。
(2)本書給出了基于Python實現的算法代碼,還有與之對應并配套的、可獨立運行的Python程序,這是本書的一大特色。以在單鏈表中插入一個數據元素為例,在書中有使用Python實現的在單鏈表的首端插入一個數據元素和在尾端插入一個數據元素的源代碼,而配套的源程序中有單鏈表結點的類定義,單鏈表的類定義,創建一個單鏈表源代碼,插入結點前和插入結點后遍歷該單鏈表的源程序。
通過這樣的設計,教師在課堂教學時可專注于講解算法的重點和難點,學生即使完全不會編寫Python程序,也可以通過閱讀這些源代碼在課后自行學習,這對培養學生的自學能力十分有益。尤其是當學生的水平參差不齊時,由于課堂教學時間有限,教師可以更好地安排學生課余學習。
計算機及相關專業屬于工科,其中絕大部分課程都需要學生動手編寫大量程序并上機調試成功后,才能理解其對應的理論知識,數據結構也不例外。Python以簡潔、優美和容易使用著稱,網上也有大量可用的資源,可以幫助學生更好地理解本書。
感謝在本書編寫過程中給予過支持和幫助的侯靜、惠敏、蔡云戈、李鑫勇和胡妍等同學!感謝在成書過程中家人所給予的支持和幫助!
作者在編寫本書的過程中,參閱了大量相關教材和專著,也在網上查找了很多資料,在此向各位原著者致敬和致謝!
由于作者水平有限,加上時間倉促,書中難免存在不妥或錯誤,懇請讀者批評指正!
作者郵箱:guanghezhang@163.com。
作者
2018年1月
- ASP.NET Web API:Build RESTful web applications and services on the .NET framework
- Deploying Node.js
- Building Modern Web Applications Using Angular
- INSTANT OpenCV Starter
- Web開發的貴族:ASP.NET 3.5+SQL Server 2008
- C語言程序設計立體化案例教程
- Learning Neo4j 3.x(Second Edition)
- Kinect for Windows SDK Programming Guide
- Java Web程序設計任務教程
- Getting Started with React Native
- QGIS Python Programming Cookbook(Second Edition)
- 監控的藝術:云原生時代的監控框架
- Java Web動態網站開發(第2版·微課版)
- Flask開發Web搜索引擎入門與實戰
- HTML并不簡單:Web前端開發精進秘籍