一、 數據結構考查目標
1. 掌握數據結構的基本概念、基本原理和基本方法。
2. 掌握數據的邏輯結構、存儲結構及其基本操作的實(shí)現,能夠對算法進(jìn)行基本的時(shí)間復雜度與空間復雜度的分析。
3. 能夠運用數據結構的基本原理和方法進(jìn)行問(wèn)題的分析和求解,具備采用C或C++語(yǔ)言設計與實(shí)現算法的能力。
二、數據結構考點(diǎn)解析
今天我們首先來(lái)解析一下計算統考大綱數據結構部分及其相關(guān)知識點(diǎn)。數據結構占了45分,和計算機組成原理部分同一個(gè)比重,在以往各年計算機專(zhuān)業(yè)的研究生入學(xué)考試中,幾乎沒(méi)有學(xué)校不考查數據結構的內容,而且絕大部分考試中,數據結構這一門(mén)都占據了重要的地位,這足以體現計算機專(zhuān)業(yè)研究生選拔對數據結構課程的要求之重。
2016年的統考大綱對數據結構的考查目標定位為掌握數據結構的基本概念、基本原理和基本方法;掌握數據的邏輯結構、存儲結構及其基本操作的實(shí)現,能夠對算法進(jìn)行基本的時(shí)間復雜度與空間復雜度的分析;能夠綜合運用數據結構的基本原理和方法進(jìn)行問(wèn)題的分析和求解,具備采用C或C++語(yǔ)言設計與實(shí)現算法的能力。要求運用數據結構的基本原理和方法進(jìn)行分析問(wèn)題,要求學(xué)生能夠活學(xué)活用,事實(shí)上,可以看出研究生入學(xué)考試對知識實(shí)際應用能力的加強。大綱仍要求學(xué)生具備采用C或C++語(yǔ)言設計與實(shí)現算法的能力,但是考生不必因此而專(zhuān)門(mén)復習一遍C或C++程序設計,畢竟復習時(shí)間有限,而且數據結構要求的重點(diǎn)在于算法設計的能力,而不是編寫(xiě)代碼的能力,因此,只要能用類(lèi)似偽代碼的形式把思路表達清楚就行,不用強求寫(xiě)出一個(gè)沒(méi)有任何語(yǔ)法錯誤的程序。
下面我們來(lái)解析一下知識點(diǎn)。
線(xiàn)性表這一章里面的知識點(diǎn)不多,但要做到深刻理解,能夠應用相關(guān)知識點(diǎn)解決實(shí)際問(wèn)題。鏈表上插入、刪除節點(diǎn)時(shí)的指針操作是選擇題的一個(gè)?键c(diǎn),諸如雙向鏈表等一些相對復雜的鏈表上的操作也是可以出現在綜合應用題當中的。
棧、隊列和數組可以考查的知識點(diǎn)相比鏈表來(lái)說(shuō)要多一些。最基本的,是棧與隊列FILO和FIFO的特點(diǎn)。比如針對棧FILO的特點(diǎn),進(jìn)棧出棧序列的問(wèn)題常出現在選擇題中。其次,是棧和隊列的順序和鏈式存儲結構,這里一個(gè)?键c(diǎn)是不同存儲結構下棧頂指針、隊首指針以及隊尾指針的操作,特別是循環(huán)隊列判滿(mǎn)和判空的2種判斷方法。再次,是特殊矩陣的壓縮存儲,這個(gè)考點(diǎn)復習的重點(diǎn)可以放在二維矩陣與一維數組相互轉換時(shí),下標的計算方法,比如與對角線(xiàn)平行的若干行上數據非零的矩陣存放在一維數組后,各個(gè)數據點(diǎn)相應的下標的計算。這一章可能的大題點(diǎn),在于利用堆;蜿犃械奶匦,將它們作為基礎的數據結構,支持實(shí)際問(wèn)題求解算法的設計,例如用棧解決遞歸問(wèn)題,用隊列解決圖的遍歷問(wèn)題等等。
樹(shù)和二叉樹(shù)。這一章中我們從順序式的數據結構,轉向層次式的數據結構,要掌握樹(shù)、二叉樹(shù)的各種性質(zhì)、樹(shù)和二叉樹(shù)的不同存儲結構、森林、樹(shù)和二叉樹(shù)之間的轉換、線(xiàn)索化二叉樹(shù)、二叉樹(shù)的應用(二叉排序樹(shù)、平衡二叉樹(shù)和Huffman樹(shù)),重點(diǎn)要熟練掌握的,是森林、樹(shù)以及二叉樹(shù)的前中后三種遍歷方式,要能進(jìn)行相應的算法設計。這一部分是數據結構考題歷來(lái)的重點(diǎn)和難點(diǎn),復習時(shí)要特別關(guān)注。一些常見(jiàn)的選擇題考點(diǎn)包括:滿(mǎn)二叉樹(shù)、完全二叉樹(shù)節點(diǎn)數的計算,由樹(shù)、二叉樹(shù)的示意圖給出相應的遍歷序列,依據二叉樹(shù)的遍歷序列還原二叉樹(shù),線(xiàn)索化的實(shí)質(zhì),計算采用不同的方法線(xiàn)索化后二叉樹(shù)剩余空指針域的個(gè)數,平衡二叉樹(shù)的定義、性質(zhì)、建立和四種調整算法以及回溯法相關(guān)的問(wèn)題。常見(jiàn)的綜合應用題考點(diǎn)包括:二叉樹(shù)的遍歷算法,遍歷基礎上針對二叉樹(shù)的一些統計和操作(比如結點(diǎn)數統計、左右子樹(shù)對換等等),判斷某棵二叉樹(shù)是否二叉排序樹(shù),以上這些都要求能用遞歸的和非遞歸的算法解決,特別要重視非遞歸的算法,線(xiàn)索化后二叉樹(shù)的遍歷算法,如查找某結點(diǎn)線(xiàn)索化后的前驅或后繼結點(diǎn)的算法以及給出Huffman編碼等等。
圖。在這一章中需要識記的是圖以及基于圖的各種定義,存儲方式。本章重點(diǎn):要熟練掌握圖的深度遍歷和廣度遍歷算法,這是用圖來(lái)解決應用問(wèn)題時(shí)常用的算法基礎。需要掌握基于圖的多個(gè)算法,能夠以手工計算的方式在一個(gè)給定的圖上執行特定的算法求解問(wèn)題。常見(jiàn)的應用問(wèn)題直接給出或經(jīng)過(guò)抽象,會(huì )成為下列問(wèn)題:最小生成樹(shù)求解(PRIM算法和KRUSKAL算法,兩種方法思想都很簡(jiǎn)單,但要注意不要混淆這兩種方法),拓撲排序問(wèn)題(這里會(huì )用到數組實(shí)現的鏈表,可以注意一下),關(guān)鍵路徑問(wèn)題(數據結構的較大難點(diǎn),要把概念理解透,能做出表格找出關(guān)鍵路徑),最短路徑問(wèn)題(有重要的應用背景,也是貪心法不多的能給出最優(yōu)解的典型問(wèn)題之一)。
查找。這一章,需要識記關(guān)鍵字、主關(guān)鍵字、次關(guān)鍵字的含義;本章重點(diǎn): 靜態(tài)查找與動(dòng)態(tài)查找的含義及區別;平均查找長(cháng)度ASL的概念及在各種查找算法中的計算方法和計算結果,特別是一些典型結構的ASL值,B樹(shù)的概念和基本操作沖突解決方法的選擇和沖突處理過(guò)程的描述,B+樹(shù)的概念,特別要注意B樹(shù)和B+樹(shù)概念的對比,以及Hash表相關(guān)的概念。要熟練掌握順序表、鏈表、二叉樹(shù)上的查找方法,特別要注意順序查找、二分查找的適用條件(比如鏈表上用二分查找就不合適)和算法復雜度。
排序。既包括內部排序,又包括外部排序,排序既是重點(diǎn),又是難點(diǎn)。排序算法眾多,光大綱上列出的內部排序就有9種,還要再加上外部排序,各種不同算法還有相應的一些概念定義需要記住。選擇題常見(jiàn)的問(wèn)題包括:不同排序算法的復雜度,給定數列要求給出某種特定排序方法運行一輪后的排序結果,或者給出初始數列和一輪排序結果要求選擇采用的排序算法,給定時(shí)間、空間復雜度要求以及數列特征要求選擇合適的排序算法等等。如果排序這一考點(diǎn)出現在綜合應用題中則常與數組結合來(lái)考查。