2023年青海省資料總結大綱

2021-12-22 16:57:09 字數 1124 閱讀 1809

1、請設計乙個演算法,要求該演算法把二叉樹的葉子結點按從左到右的順序連成乙個單鏈表,表頭指標為head。二叉樹按二叉鍊錶方式儲存,鏈結時用葉子結點的右指標域來存放單鏈表指標。分析你的演算法的時、空複雜度。

2、矩陣中元素按行和按列都已排序,要求查詢時間複雜度為o(m+n),因此不能採用常規的二層迴圈的查詢。可以先從右上角(i=a,j=d)元素與x比較,只有三種情況:一是a[i,j]>x,這情況下向j 小的方向繼續查詢;二是a[i,j]void search(datatype a[ ][ ], int a,b,c,d, datatype x)

//n*m矩陣a,行下標從a到b,列下標從c到d,本演算法查詢x是否在矩陣a中.

else if (a[i][j]>x) j--; else i++;

if(flag) printf(「a[%d][%d]=%d」,i,j,x假定x為整型.

else printf(「矩陣a中無%d 元素」,x);

}演算法search結束。

[演算法討論]演算法中查詢x的路線從右上角開始,向下(當x>a[i,j])或向左(當x3、本題應使用深度優先遍歷,從主調函式進入dfs(v)時,開始記數,若退出dfs()前,已訪問完有向圖的全部頂點(設為n個),則有向圖有根,v為根結點。將n個頂點從1到n編號,各呼叫一次dfs()過程,就可以求出全部的根結點。題中有向圖的鄰接表儲存結構、記頂點個數的變數、以及訪問標記陣列等均設計為全域性變數。

建立有向圖g的鄰接表儲存結構參見上面第2題,這裡只給出判斷有向圖是否有根的演算法。

int num=0, visited=0 //num記訪問頂點個數,訪問陣列visited初始化。

const n=使用者定義的頂點數;

adjlist g用鄰接表作儲存結構的有向圖g。

void dfs(v)

//if

p=g[v].firstarc;

while (p)

//while

visited[v]=0; num--; //恢復頂點v

}//dfs

void judgeroot()

//判斷有向圖是否有根,有根則輸出之。

}// judgeroot

演算法中列印根時,輸出頂點在鄰接表中的序號(下標),若要輸出頂點資訊,可使用

g[i].vertex。

2023年青海省資料總結基礎

1 有乙個帶頭結點的單鏈表,每個結點包括兩個域,乙個是整型域info,另乙個是指向下乙個結點的指標域next。假設單鏈表已建立,設計演算法刪除單鏈表中所有重複出現的結點,使得info域相等的結點只保留乙個。include typedef char datatype typedef struct no...

2023年青海省資料總結加強

1 有乙個帶頭結點的單鏈表,每個結點包括兩個域,乙個是整型域info,另乙個是指向下乙個結點的指標域next。假設單鏈表已建立,設計演算法刪除單鏈表中所有重複出現的結點,使得info域相等的結點只保留乙個。include typedef char datatype typedef struct no...

2023年青海省資料總結要領

1 1 p rchild 2 p lchild 3 p lchild 4 addq q,p lchild 5 addq q,p rchild 25.1 t rchild null 2 t rchild null 3 n0 4 count t lchild 5 count t rchild 26.1 ...