21計算機考研,資料結構該怎麼複習,用什麼書和習題啊?

時間 2021-05-30 00:05:10

1樓:劍影王者教學

主要首先看你要的是什麼學校,對應學校用的是什麼書籍,教材,這個很關鍵,不然你自己盲目複習效果可能不是很好,我是乙個過來人,這樣準備準沒錯;

比如你考清華的,那麼你就得去了解下,清華的演算法與資料結構等等這些課程用什麼教材,然後對應的買書或者向朋友借,或者網上購買這樣比較針對性;

最後祝你考研成功;

2樓:Python蟒蛇

剛一開始,你需要做的,是去看你想要考的學校的大綱,這個很重要。因為很多學校考的科目雖然相同,但是他們考的內容確實不一樣的。

比如說雖然都是考資料結構,408的資料結構和山大的資料結構都完全不同,再比如天大和北理的資料結構,大綱也不同。

第一步,你要去看目標院校的大綱,然後買書看。我看的書是下面兩本,你可以買來看。

如果說你的基礎一般,那你看天勤的書。我看基礎的部分的時候,看的就是天勤的書。只需要看他的知識部分就好了,沒必要做後面的題。

這本大黑書,是翻譯的書,裡面的句子某些是晦澀難懂的,就是不太符合我們的講話習慣的那種。不過這本書講的很好,比較經典。不過很多內容都是不考的,講的比天勤深入。

我給你的建議就是,先看天勤的那本書,再看這本大黑書。但是大黑書不需要全看,我甚至連天勤的書都沒看完的。

你要對著他的大綱去看,對著大綱,大綱上面寫的東西,你一定要弄清楚弄明白,一點都不能疏忽,因為他們學校出題目,都是會出大綱上面所覆蓋到的,而大綱覆蓋到的部分,是比書上的內容少了很多的,這樣可以大大增加你的複習效率。

還有一點就是,大綱要求的一般不難,書上寫的內容則是有很多困難的地方,你遇到覺得非常難非常難的東西,覺得自己看不懂了,你就去翻翻大綱,如果說大綱上沒有,就沒必要看了,白白浪費自己的時間,如果說大綱上有,你就要仔細看了。

把這書大綱上要求的部分看完之後,你就該去訓摘他們的歷年真題了,至少要找3年的題,最好是過去6年的題目你都找到,看看都考些什麼,哪些題型,歷年的題目如何變化,這些都是非常重要的。

有一點值得提的就是,你目標院校所要求的參考書,我建議你是一定要買並且對著大綱看的。王道天勤你可二選一,也是必買的書,因為這些書為應試而出,對考試幫助是巨大的。

如果是22屆考研的同學,現在你可把重心放到數學上,專業課書可以買來偶爾翻看,基礎好的話,專業課很快就複習完了,一般自命題專業課不會太難。

3樓:大何的小世界

我比較推薦

嚴蔚敏的《資料結構C語言版》和《資料結構精講和習題講解》;

我發現大一的時候也是用的嚴版題集

資料結構是計算機專業考研科目之一,它的考試內容包括:

棧和佇列(棧和佇列基本操作、字尾表示式等)

樹與二叉樹(性質、儲存方式、遍歷、哈夫曼樹、遍歷演算法等)

圖(儲存方式、遍歷、連通性問題、關鍵路徑、最短路徑等)

查詢(二叉排序樹、平衡二叉樹、B-樹、雜湊表)

內部排序

我認為複習時首先要深刻理解資料結構的三要素:

邏輯結構、儲存結構以及在其上定義的各種基本操作,要把複習的重點放在掌握常用資料結構的這三個要素上面。

而我對這些方面的了解是:

(1) 線性表部分由於比較簡單,又是整個資料結構的基礎,所以考察的內容會比較細緻。

此部分,有可能出大題的地方:集合求並、一元多項式求和。

(2) 棧、佇列和陣列時資料結構的重要工具,考查重點偏向於應用。

對於具體的定義的方式簡單清楚就可以,重點是理解棧、佇列的特點,熟練掌握棧、佇列的一些經典的應用

在應用題中,常常會用到棧、佇列陣列作為工具。

(3) 樹是資料結構最重要的部分,它的內容紛繁而複雜,但又尤為重要,是複習的重中之重。

對於樹的複習方法,要重點掌握樹的遍歷,樹的任何操作,其實都是以遍歷為基礎,稍加改動visit函式而已。

(4) 圖的概念比較多,沒有基本概念的基礎,是很難把知識掌握清楚的。

對於圖,是承接著樹而衍生出來的,在實際應用中,圖更為廣泛。

所有問題都是化未知為已知,解決圖的問題,很多時候是借助樹和二叉樹來實現的,應注意樹、二叉樹和圖之間的對應關係。

考研複習中,圖無疑是另乙個重點,此部分出大題的可能性很高。

要重視有人名來命名的演算法,這類演算法是為了紀念作者而命名的,可見其經典性,這類演算法也相當有難度,

考試時,僅僅只會就此演算法稍加改動,或應用演算法的思想來。

只有熟練掌握了基本演算法以後,才能在此基礎上對常用的資料結構進行比較靈活的運用,

而對於資料結構的靈活運用,正是這門課程的難點所在。

其實總結一句話:多動手,多思考

最後,掛上鏈結吧,免得再麻煩去找了

我發現還有電子版的

4樓:研芝士計算機考研

摘要:考研各項科目中,專業課的重要性不言而喻。與公共課相比,專業課的難度往往更大一些,出題會更深入、更全面,更考察考生的水平和能力。

所以複習千萬不能掉以輕心,即便本科已經有了不錯的基礎,也有可能因為研究方向的細化,而面臨著全新陌生的考研複習內容,有必要及早開始。今天了解一下計算機考研專業課的核心考點。

遍歷的過程就是把非線性結構的二叉樹中的結點排成乙個線性序列的過程。

二叉樹遍歷方法可分為兩大類,一類是「寬度優先」法,即從根結點開始,由上到下,從左往右一層一層的遍歷;另一類是「深度優先法」,即一棵子樹一棵子樹的遍歷。

迪傑斯特拉(Dijkstra)演算法求單源最短路徑,演算法思想:

設S為最短距離已確定的頂點集(看作紅點集),V-S是最短距離尚未確定的頂點集(看作藍點集)。

1.初始化:初始化時,只有源點s的最短距離是已知的(SD(s)=0),故紅點集S=,藍點集為空。

2.重複以下工作,按路徑長度遞增次序產生各頂點最短路徑,在當前藍點集中選擇乙個最短距離最小的藍點來擴充紅點集,以保證演算法按路徑長度遞增的次序產生各頂點的最短路徑。

當藍點集中僅剩下最短距離為∞的藍點,或者所有藍點已擴充到紅點集時,s到所有頂點的最短路徑就求出來了。

注意:①若從源點到藍點的路徑不存在,則可假設該藍點的最短路徑是一條長度為無窮大的虛擬路徑。②從源點s到終點v的最短路徑簡稱為v的最短路徑;s到v的最短路徑長度簡稱為v的最短距離,並記為SD(v)。

大根堆的定義:完全二叉樹,任一非葉子結點都大於等於它的孩子,也就是說根結點是最大的。而且顯然大根堆的任一棵子樹也是大根堆。

堆排序的基本思想:記錄區的分為無序區和有序區前後兩部分;用無序區的數建大根堆,得到的根(最大的數)和無序區的最後乙個數交換,也就是將該根歸入有序區的最前端;如此重複下去,直至有序區擴充套件至整個記錄區。

具體操作可按下面步驟實現:

1.建大根堆。

2.交換根和無序區最後乙個數。

3.重建大根堆,因為交換只是使根改變了,所以左右子樹依然分別是大根堆。

4.比較根,左子樹的根和右子樹的根,如果根最大,則無須再作調整,樹已經是大根堆了;如果左子樹的根最大,交換它與根,再遞迴調整左子樹;如果右子樹的根最大,交換它與根,再遞迴調整右子數。

5.遞迴調整到葉子的時候,樹就是大根堆了。

幾種主要的排序演算法:氣泡排序、選擇排序、插入排序、快速排序、歸併排序、Shell排序、堆排序等。

氣泡排序演算法思想:將待排序的元素看作是豎著排列的「氣泡」,較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個「氣泡」序列處理若干遍。

所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。如果發現兩個相鄰元素的順序不對,即「輕」的元素在下面,就交換它們的位置。

選擇排序演算法思想:選擇排序的基本思想是對待排序的記錄序列進行n-1遍的處理,第i遍處理是將L[i..n]中最小者與L[i]交換位置。

這樣,經過i遍處理之後,前i個記錄的位置已經是正確的了。

插入排序演算法思想:經過i-1遍處理後,L[1..i-1]己排好序。第i遍處理僅將L[i]插入L[1..i-1]的適當位置,使得L[1..i]又是排好序的序列。

快速排序演算法思想:快速排序的基本思想是基於分治策略的。

對於輸入的子串行L[p..r],如果規模足夠小則直接進行排序,否則分三步處理:1.

分解(Divide):將輸入的序列L[p..r]劃分成兩個非空子序列L[p..

q]和L[q+1..r],使L[p..q]中任一元素的值不大於L[q+1..

r]中任一元素的值。2.遞迴求解(Conquer):

通過遞迴呼叫快速排序演算法分別對L[p..q]和L[q+1..r]進行排序。

3.合併(Merge):由於對分解出的兩個子串行的排序是就地進行的,所以在L[p..

q]和L[q+1..r]都排好序後不需要執行任何計算L[p..r]就已排好序。

歸併排序演算法思想:分而治之(divide-conquer)。

每個遞迴過程涉及三個步驟:1.分解,把待排序的n個元素的序列分解成兩個子串行,每個子串行包括n/2個元素。

2.治理,對每個子串行分別呼叫歸併排序MergeSort,進行遞迴操作。3.

合併,合併兩個排好序的子串行,生成排序結果。

Shell排序演算法思想:演算法先將要排序的一組數按某個增量d分成若干組,每組中記錄的下標相差d.對每組中全部元素進行排序,然後再用乙個較小的增量對它進行,在每組中再進行排序。

當增量減到1時,整個要排序的數被分成一組,排序完成。

堆排序演算法思想:用大根堆排序的基本思想:1.

先將初始檔案R[1..n]建成乙個大根堆,此堆為初始的無序區。2.

再將關鍵字最大的記錄R1和無序區的最後乙個記錄R[n]交換,由此得到新的無序區R[1..n-1]和有序區R[n],且滿足R[1..n-1].

keys≤R[n].key。3.

由於交換後新的根R[1]可能違反堆性質,故應將當前無序區R[1..n-1]調整為堆。

從二叉樹結構的整體看,二叉樹可以分為根結點,左子樹和右子樹三部分,只要遍歷了這三部分,就算遍歷了二叉樹。設D表示根結點,L表示左子樹,R表示右子樹,則DLR的組合共有6種,即DLR,DRL,LDR,LRD,RDL,RLD。

若限定先左後右,則只有DLR,LDR,LRD三種,分別稱為先(前)序法(先根次序法),中序法(中根次序法,對稱法),後序法(後根次序法)。三種遍歷的遞迴演算法如下:

1.先序法(DLR)

若二叉樹為空,則空操作,否則:訪問根結點—>先序遍歷左子樹—>先序遍歷右子樹。

2.中序法(LDR)

若二叉樹為空,則空操作,否則:中序遍歷左子樹—>訪問根結點—>中序遍歷右子樹。

3.後序法(LRD)

若二叉樹為空,則空操作,否則:後序遍歷左子樹—>後序遍歷右子樹—>訪問根結點。

完全二叉樹的定義:深度為k,有n個結點的二叉樹當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時,稱為完全二叉樹。

完全二叉樹的葉子數為(n+1)/2取下整。

將一棵樹轉換為二叉樹的方法是:

1.樹中所有相鄰兄弟之間加一條連線。

2.對樹中的每個結點,只保留其與第乙個孩子結點之間的連線,刪去其與其它孩子結點之間的連線。

3.以樹的根結點為軸心,將整棵樹順時針旋轉一定的角度,使之結構層次分明。

森林轉換為二叉樹的方法如下:

1.將森林中的每棵樹轉換成相應的二叉樹。

2.第一棵二叉樹不動,從第二棵二叉樹開始,依次把後一棵二叉樹的根結點作為前一棵二叉樹根結點的右孩子,當所有二叉樹連在一起後,所得到的二叉樹就是由森林轉換得到的二叉樹。

樹和森林都可以轉換為二叉樹,二者的不同是:樹轉換成的二叉樹,其根結點必然無右孩子,而森林轉換後的二叉樹,其根結點有右孩子。將一棵二叉樹還原為樹或森林,具體方法如下:

1.若某結點是其雙親的左孩子,則把該結點的右孩子、右孩子的右孩子、……都與該結點的雙親結點用線連起來。

2.刪掉原二叉樹中所有雙親結點與右孩子結點的連線。3.整理由1、2兩步所得到的樹或森林,使之結構層次分明。

無向圖的每條邊,在頂點計算度的過程中,都要兩次參與計算(與邊兩關聯的2個頂點),因此所有頂點的度之和為偶數。

具有n個頂點的無向連通圖,其邊數大於或等於n-1。

在無向連通圖中,所有頂點的度數都有可能大於1。

一棵m階的B樹滿足下列條件:

1.每個結點至多有m棵子樹。

2.除根結點外,其它每個分支至少有m/2棵子樹。

3.根結點至少有兩棵子樹(除非B樹只有乙個結點)。

4.所有葉結點在同一層上。B樹的葉結點可以看成一種外部結點,不包含任何資訊。

5.有j個孩子的非葉結點恰好有j-1個關鍵碼,關鍵碼按遞增次序排列。結點中包含的資訊為∶(p0,k1,p1,k2,p2,…,kj-1,pj-1),其中,ki為關鍵碼。

計算機考研408指定教材裡面,資料結構和作業系統是哪個書?

微笑不失禮 資料結構 資料結構 C 語言版 嚴蔚敏作業系統 計算機作業系統 第四版 湯小丹剩下兩門科目的參考書 計算機組成原理 計算機組成原理 第2 版 唐朔飛計算機網路 計算機網路 第7 版 謝希仁408的指定教材不是每個人都需要看的,基礎好的同學可以跳過指定教材,直接開始王道的複習就可以,基礎不...

21屆計算機考研怎麼選擇?

科個錘子,坑人能別這麼坑嘛?今年錄取情況已經出來了,平均分357,md這分數中9計科都能上了,上個錘子科軟 科軟招生辦也是nb,複試線劃到320,明年又是一大波倒霉蛋擠進來 駝駝皮褲 現在計算機考研沒什麼可以撿漏的學校了,所以難度都不是很小。重慶郵電差不多和南京郵電一樣,雖然是雙非但計算機實力不錯,...

在19計算機考研炸掉的情況下,21計算機考研的難度會很大嗎?

旎旎 會比較大,因為今年考研人數又會創歷史新高。不過也不要過於恐慌,好好複習別想那麼多,每年考研都那麼難,誰心態穩誰就贏了。19年我備考的時候不也說超級難嗎,我這不也上岸了,而且我還考的408,努力複習考高分乾掉對手才是最重要的。我在備考的時候每天都7點開始晚上12點結束,沒有午休吃飯半小時,就這樣...