資料結構筆記 第五章 串

2021-10-11 03:15:45 字數 2423 閱讀 1437

adt 串(string)

data

串中元素僅由乙個字元組成,相鄰元素具有前驅和後繼關係。

operation

strassign

(t,*chars)

: 生成乙個其值等於字串常量chars的串t。

strcopy

(t,s)

: 串s存在,由串s複製得串t。

clearstring

(s): 串s存在,將串清空。

stringempty

(s): 若串s為空,返回true,否則返回false

strlength

(s): 返回串s的元素個數,即串的長度。

strcompare

(s,t)

: 若s>t,返回值》

0,若s=t,返回0

,若s0。 concat

(t,s1,s2)

: 用t返回由s1和s2連線而成的新串。

substring

(sub,s,pos,len)

: 串s存在,1

<=pos<=

strlength

(s),且0

<=len<=

strlength

(s)-pos+1,

用sub返回串s的第pos個字元其長度為len的子串。

index

(s,t,pos)

:串s和t存在,t是非空串,1

<=pos<=

strlength

(s)。

若珠串s中存在和串t值相同的元素則返回它在珠串s中

第pos個字元之後第一次出現的位置,否則返回0。

replace

(s,t,v)

: 串s、t和v存在,t是非空串。用v替換主串s**現的

所有與t相等的不重疊子串。

strinsert

(s,pos,t)

: 串s和t存在,1

<=pos<=

strlength

(s)+

1,在串s的第pos個字元之前插入串t。

strdelete

(s,pos,len)

: 串s存在,1

<=pos<=

strlength

(s)-len+

1。 從串s中刪除第pos個字元起長度為len的子串。

endadt

/*t為非空串。若主串s中第pos個字元之後存在與t相等的子串*/

/*則返回第乙個這樣的子串在s中的位置,否則返回0*/

intindex

(string s, string t,

int pos)

}return0;

}

串的鏈式儲存結構:與線性表類似,但如果乙個結點放乙個字元會存在很大浪費,因此乙個結點可放多個字元,最後乙個結點若是未被沾滿,可用"#"或其他非串值字元補全。

/*樸素的模式匹配,時間複雜度o((n-m+1)*m)。

返回子串t在主串s中第pos個字元之後的位置。若不存在,則返回0

t非空,1<=pos<=strlength(s)

假設主串s和要匹配的子串t的長度存在s[0]與t[0]中

實現:從主串 s 的第 pos 個字元起和模式 t 的第乙個字元比較之,

若相同,則兩者順次的去比較後續的每乙個字元,

否則從主串 s 的下乙個字元起再重新和模式 t 的字元比較之。

*/int

index

(string s, string t,

int pos)

else

if(j>t[0]

)/*若匹配完,肯定是子串先比完*/

return i-t[0]

;else

return0;

}}

/*計算next陣列*/

void

get_next

(string t,

int*next)

else

j=next[j]

;/*若字元不相同,則j值回溯*/}}

intindex_kmp

(string s, string t,

int pos)

else}if

(j>t[0]

)return i-t[0]

;else

return0;

}//get_next時間複雜度o(m),index_kmp時間複雜度o(n),整個演算法時間複雜度o(m+n)。

void

get_nextval

(string t,

int*nextval)

}}

資料結構筆記 第五章

一.樹的邏輯結構 樹是乙個有限的集合,集合中的元素稱為結點。1 結點的個數為0 稱為空樹。2 結點的個數為1 此節點稱為根節點。3 節點的個數大於1 則除了根結點以外的結點又可分為多個集合,每乙個集合本身其實質上也是一棵樹,並且是根節點的子樹。二.二叉樹的邏輯結構 1 二叉樹的定義 二叉樹首先必須是...

資料結構筆記 第五章

雙親表示法 基本思想 用一維陣列來儲存樹的各個結點 一般 按層序儲存 陣列中的乙個元素對應樹中的乙個 結點,包括結點的資料資訊以及該結點的雙親在數 組中的下標 森林轉換為二叉樹 將森林中的每棵樹轉換成二叉樹 從第二棵二叉樹開始,依次把後一棵二叉樹的根 結點作為前一棵二叉樹根結點的右孩子,當所有二 叉...

資料結構筆記 第五章

樹的定義是採用遞迴方法 孩子 雙親 樹中某結點子樹的根結點稱為這個結點的孩子結點,這個結點稱為它孩子結點的雙親結點 兄弟 具有同乙個雙親的孩子結點互稱為兄弟。路徑 如果樹的結點序列n1,n2,nk有如下關係 結點ni是ni 1的雙親 1 idestroytree 前置條件 樹已存在 輸入 無 功能 ...