串的表示與實現
串三種儲存
串的n中應用
1)是由零個或者多個字元組成的有限序列
2) 記作s=『a1a2a3 an』
給定兩個串:x=『
x1x2
…xn』
x=『x~1~x~2~…x~n~』
x=『x1x
2…xn
』和y=『y
1y2…
ym⋅y=『y~1~y~2~…y~m·
y=『y1y
2…ym
⋅』,則:
}可採用鍊錶方式儲存串值,每個結點可以存放乙個字元,也可以存放
多個字元 (如圖所示)。
//串的塊狀儲存
#define chunksize 80
//可由使用者定義的塊大小
typedef
struct chunkchunk;
typedef
struct
儲存密度
儲存密度=串值所佔的儲存位/實際分配的儲存位。
詳見上述
1)基本思想:
a. 從主串s
ss中的第乙個字元開始和模式t
tt的第乙個字元進行比較,
b.重複上述過程
2)缺點 :
a. 演算法的一次執行時間不容忽視:問題規模通常很大,常常需要在大量資訊中進行匹配;
b. 演算法改進所取得的積累效益不容忽視:模式匹配操作經常被呼叫,執行頻率高。
3)演算法過程:
4)演算法:
//bf演算法
void
bp(sstring &t,sstring s,
int pos)
else}if
(j>t[0]
)return i-t[0]
;//成功
else
return0;
}
5)複雜度:
a. 最壞情況:不成功匹配都發生在串t的最後乙個字元。
b.最好情況:不成功匹配都發生在串t的第1個字元
void
get_next()
}
bool
kmp()}
else}}
return
false
;}
資料結構 陣列 廣義表
陣列,是有序的元素序列。若將有限個型別相同的變數的集合命名,那麼這個名稱為陣列名。組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。用於區分陣列的各個元素的數字編號稱為下標。陣列是在程式設計中,為了處理方便,把具有相同型別的若干元素按無序的形式組織起來的一種形式。這些無序排列的...
資料結構 串和廣義表
串中字元的數目n稱為串的長度 0個字元的串稱為 空串,長度為0 包含串中任意個 連續字元 的串稱為子串,包含子串的串稱為主串。如a ibm c bm 則a的長度為3,且c為a的子串 b 則b的長度為0 在串的基本操作時候,通常是以 串的整體 作為操作物件。也成為列表,是線性表的一種擴充套件,也是資料...
資料結構 陣列和廣義表
感覺陣列這一段沒講什麼太多的東西。先是講了下定義,就是每個維度上都有對應的前驅後繼,首尾元素例外。操作只有初始化 銷毀 取元素 修改元素。然後講了下適合用順序儲存結構,多維情況下根據下標 j1 j2 j3 jn 找到對應畫素的儲存位置 cn l,ci 1 bi ci,loc loc基址 ciji l...