資料結構作業

2022-08-22 09:18:08 字數 1144 閱讀 8285

一,思維導圖

二,概念筆記

1,在計算時間複雜度的時候一般有:o(1)2)n)2,在計算平均時間複雜度時對p(i)*t(i)求和,其中p(i)是概率,t(i)是每個i的時間複雜度。

3,儲存密度等於節點中個元素所佔的儲存量除以結點所佔的儲存量,儲存密度越大儲存空間的利用率越高。

4,每次出棧只能出棧棧頂元素,棧可以稱為後進先出表,佇列的插入與刪除操作只能在各自的一端進行,對可以被成為先進先出表。

5,棧空:s->top == -1; 棧滿:s->top == maxsize-1;

6,隊空:q->front == q->rear; 隊滿:q->rear == maxsize-1;

7,環形隊在儲存器中的位址是連續編號的,並不是環。

8,串的模式匹配有兩種演算法:bf與kmp,其中bf是採用窮舉的方法挨個尋找時間複雜度較高,而kmp演算法通過計算next[j]的值改變主串指標的回溯方式,來減少回溯次數。

三,疑難問題及其解決方案

1,遞迴演算法的時空間複雜

void (int a,int n,int k) 

{ int i;

if (k == n-1) {

for (i=0; it(n,k) = n ; (k == n-1)

t(n,k) = n-k + t(n,k+1); (其他情況)

s(n,k) = 1; (k == n-1)

s(n,k) = 1 + s(n,k+1); (其他情況)

當我們遇到計算遞迴演算法的時空間複雜度時,先列個解析式再逐步解決。

2,kmp演算法next值計算

第一位一定是0,其他位置取以滿足t0.....tk-1=tj-k....tj-1的最大值。

資料結構作業 2

題目 設有乙個線性表 a0,a1,an 2,an 1 存放在單鏈表中。試編寫乙個演算法將該線性表原地逆置,即利用原結點空間置換為 an 1,an 2,a1,a0 並分析該演算法的時間複雜度。1 需求分析 1 用單鏈表存放乙個線性表 a0,a1,an 2,an 1 2 將該線性表原地逆置,即利用原結點...

資料結構作業 7

題目 編寫遞迴演算法,計算二叉樹中葉子結點的數目。1 需求分析 使用遞迴的方法,實現二叉樹中葉子節點數量的計算。輸入 一顆樹的前序遍歷,用 代替結束符。例如,前序遍歷 ab c d 輸出 二叉樹的葉子節點個數。功能 計算輸入的二叉樹的葉子節點個數。2 概要設計 二叉樹定義 資料 左孩子 或為空,或為...

資料結構作業 佇列

include include using namespace std class linkqueue 連佇列前視說明 class linkqueuenode 節點類的建構函式 private int elem 資料域 linkqueuenode next 指標域 class linkqueue 構...