⑴ 考研數據結構第七題怎麼做
15 * 15 = 225
14 * 14 = 196
so the ans is C
歸並演算法趟數與樹結構一致,二路歸並用二叉樹模擬,N路歸並對應N叉樹,指數級遞增
⑵ 考研數據結構-時間復雜度的計算
1 兩個指針一個從前向後 一個從後向前
2 如果和大於sum 後面的指針向前移1個 和小於sum前面的指針向後移1個
3 重復2直到等於sum或兩個指針指向同一個元素
時間復雜度O(n)
⑶ 如何以考研為目的學習數據結構
重難點解析和復習建議.統考大綱對數據結構的考查目標定位為掌握數據結構的基本概念、基本原理和基本方法,掌握數據的邏輯結構、存儲結構以及基本操作的實現;能夠對演算法進行基本的時間復雜度和空間復雜度的分析;能夠運用數據結構的基本原理和方法進行問題的分析求解,具備採用C、C++或JAVA語言設計程序與實現演算法的能力。當然,考生也不必因此而專門復習一遍C或C++程序設計,畢竟復習時間有限,而且數據結構要求的重點在於演算法設計的能力,而不是編寫代碼的能力,因此,只要能用類似偽代碼的形式把思路表達清楚就行,不用強求寫出一個沒有任何語法錯誤的程序。
線性表。線性表這一章裡面的知識點不多,但要做到深刻理解,能夠應用相關知識點解決實際問題。鏈表上插入、刪除節點時的指針操作是選擇題的一個常考點,諸如雙向鏈表等一些相對復雜的鏈表上的操作也是可以出現在綜合應用題當中的。
棧、隊列和數組可以考查的知識點相比鏈表來說要多一些。最基本的,是棧與隊列FILO和FIFO的特點。比如針對棧FILO的特點,進棧出棧序列的問題常出現在選擇題中。其次,是棧和隊列的順序和鏈式存儲結構,這里一個常考點是不同存儲結構下棧頂指針、隊首指針以及隊尾指針的操作,特別是循環隊列判滿和判空的2種判斷方法。再次,是特殊矩陣的壓縮存儲,這個考點復習的重點可以放在二維矩陣與一維數組相互轉換時,下標的計算方法,比如與對角線平行的若干行上數據非零的矩陣存放在一維數組後,各個數據點相應的下標的計算。這一章可能的大題點,在於利用堆棧或隊列的特性,將它們作為基礎的數據結構,支持實際問題求解演算法的設計,例如用棧解決遞歸問題,用隊列解決圖的遍歷問題等等。
⑷ 考計算機研究生,如何學數據結構
重難點解析和復習建議.統考大綱對數據結構的考查目標定位為掌握數據結構的基本概念、基本原理和基本方法,掌握數據的邏輯結構、存儲結構以及基本操作的實現;能夠對演算法進行基本的時間復雜度和空間復雜度的分析;能夠運用數據結構的基本原理和方法進行問題的分析求解,具備採用C、C++或JAVA語言設計程序與實現演算法的能力。當然,考生也不必因此而專門復習一遍C或C++程序設計,畢竟復習時間有限,而且數據結構要求的重點在於演算法設計的能力,而不是編寫代碼的能力,因此,只要能用類似偽代碼的形式把思路表達清楚就行,不用強求寫出一個沒有任何語法錯誤的程序。
線性表。線性表這一章裡面的知識點不多,但要做到深刻理解,能夠應用相關知識點解決實際問題。鏈表上插入、刪除節點時的指針操作是選擇題的一個常考點,諸如雙向鏈表等一些相對復雜的鏈表上的操作也是可以出現在綜合應用題當中的。
棧、隊列和數組可以考查的知識點相比鏈表來說要多一些。最基本的,是棧與隊列FILO和FIFO的特點。比如針對棧FILO的特點,進棧出棧序列的問題常出現在選擇題中。其次,是棧和隊列的順序和鏈式存儲結構,這里一個常考點是不同存儲結構下棧頂指針、隊首指針以及隊尾指針的操作,特別是循環隊列判滿和判空的2種判斷方法。再次,是特殊矩陣的壓縮存儲,這個考點復習的重點可以放在二維矩陣與一維數組相互轉換時,下標的計算方法,比如與對角線平行的若干行上數據非零的矩陣存放在一維數組後,各個數據點相應的下標的計算。這一章可能的大題點,在於利用堆棧或隊列的特性,將它們作為基礎的數據結構,支持實際問題求解演算法的設計,例如用棧解決遞歸問題,用隊列解決圖的遍歷問題等等。
樹和二叉樹:這一章中我們從順序式的數據結構,轉向層次式的數據結構,要掌握樹、二叉樹的各種性質、樹和二叉樹的不同存儲結構、森林、樹和二叉樹之間的轉換、線索化二叉樹、二叉樹的應用(二叉排序樹、平衡二叉樹和Huffman樹),重點要熟練掌握的,是森林、樹以及二叉樹的前中後三種遍歷方式,要能進行相應的演算法設計。這一部分是數據結構考題歷來的重點和難點,復習時要特別關注。一些常見的選擇題考點包括:滿二叉樹、完全二叉樹節點數的計算,由樹、二叉樹的示意圖給出相應的遍歷序列,依據二叉樹的遍歷序列還原二叉樹,線索化的實質,計算採用不同的方法線索化後二叉樹剩餘空指針域的個數,平衡二叉樹的定義、性質、建立和四種調整演算法以及回溯法相關的問題。常見的綜合應用題考點包括:二叉樹的遍歷演算法,遍歷基礎上針對二叉樹的一些統計和操作(比如結點數統計、左右子樹對換等等),判斷某棵二叉樹是否二叉排序樹,以上這些都要求能用遞歸的和非遞歸的演算法解決,特別要重視非遞歸的演算法,線索化後二叉樹的遍歷演算法,如查找某結點線索化後的前驅或後繼結點的演算法以及給出Huffman編碼等等。
圖:在這一章中需要識記的是圖以及基於圖的各種定義,存儲方式。要熟練掌握圖的深度遍歷和廣度遍歷演算法,這是用圖來解決應用問題時常用的演算法基礎。需要掌握基於圖的多個演算法,能夠以手工計算的方式在一個給定的圖上執行特定的演算法求解問題。常見的應用問題直接給出或經過抽象,會成為下列問題:最小生成樹求解(PRIM演算法和KRUSKAL演算法,兩種方法思想都很簡單,但要注意不要混淆這兩種方法),拓撲排序問題(這里會用到數組實現的鏈表,可以注意一下),關鍵路徑問題(數據結構的較大難點,要把概念理解透,能做出表格找出關鍵路徑),最短路徑問題(有重要的應用背景,也是貪心法不多的能給出最優解的典型問題之一)。
查找:這一章,需要識記關鍵字、主關鍵字、次關鍵字的含義;靜態查找與動態查找的含義及區別;平均查找長度ASL的概念念及在各種查找演算法中的計算方法和計算結果,特別是一些典型結構的ASL值,B-樹的概念和基本操作沖突解決方法的選擇和沖突處理過程的描述,B+樹的概念(新增考點),特別要注意B-樹和B+樹概念的對比,以及Hash表相關的概念。要熟練掌握順序表、鏈表、二叉樹上的查找方法,特別要注意順序查找、二分查找的適用條件(比如鏈表上用二分查找就不合適)和演算法復雜度
排序:最新的大綱將去年的內部排序范圍擴展為排序,排序既是重點,又是難點。排序演算法眾多,今年大綱還加上了外部排序,總共10種,各種不同演算法還有相應的一些概念定義需要記住。選擇題常見的問題包括:給定數列要求給出某種特定排序方法運行一輪後的排序結果,或者給出初始數列和一輪排序結果要求選擇採用的排序演算法,給定時間、空間復雜度要求以及數列特徵要求選擇合適的排序演算法等等。如果排序這一考點出現在綜合應用題中則常與數組結合來考查。
⑸ 關於考研數據結構演算法問題。
具體的數據結構需要自己寫出啊。
比如堆棧啊,隊列啊
還有,數據結構說白了還是在考你編程
pop、push之類的其實不就是自定義的函數嘛,只要給出簡單的函數就行。不需要像書上那樣考慮特別嚴謹
⑹ 考研數據結構演算法
/*
二叉排序樹T的kay值為整數,高度為k,對任意給定的整數x,
查找元素值小於x且接近x的節點並返回節點指針,如果節點不存在
則返回指針為空,要求用非遞歸演算法實現且時間復雜度T(n)=O(k)。
要求先給出演算法思想,再寫出相應代碼。
*/
/*
思想:先構建二叉排序樹;排序是按左邊小右邊大;
若x > p->key則看他是否比之前的更接近,是就保存並更新buf的值,否則棄掉 --》往右走
若x < p->key則往左走
*/
#include <stdio.h>
#include <malloc.h>
struct T
{
struct T* pLeft = NULL;
struct T* pRight = NULL;
int key;
};
struct T* root = NULL;
void insert(int key) //插入一個結點
{
if(root == NULL)
{
root = (struct T*)malloc(sizeof(struct T));
root->key = key;
}
else
{
struct T* p = root;
while(p != NULL)
{
if(key < p->key)
{
p = p->pLeft;
}
else
{
p = p->pRight;
}
}
p = (struct T*)malloc(sizeof(struct T));
p->key = key;
}
}
void init() //初始化二叉排序樹
{
int n;
printf("key的個數:");
scanf("%d",&n);
printf("輸入key值:");
int buf;
while(n--)
{
scanf("%d",&buf);
insert(buf);
}
}
struct T* seekT(int x) //查找結點
{
int buf = -1;
struct T* p = root;
struct T* q = NULL;
while(p != NULL)
{
if(x > p->key)
{
if(buf == -1 || buf > (x - p->key))
{
buf = x - p->key;
q = p;
}
p = p->pRight;
}
else
{
p = p->pLeft;
}
}
return q;
}
int main()
{
//初始化二叉排序樹
init();
printf("輸入x的值:");
int x;
scanf("%d",&x);
struct T* p = seekT(x);
return 0;
}
//你在看看
⑺ 計算機考研,數據結構演算法題怎麼寫
用類C語言偽碼書寫,基本格式應該如下:
返回類型 函數名(參數表){
//演算法簡要說明
輸入檢查;
演算法語句;
}//函數名
希望有幫到你~
⑻ 考研 數據結構 劃線的(n+1)/2怎麼算出來的
從1到n想加 n(n+1)/2
每一個的概率1/n
所以E=np=(n+1)/2