串的定長順序儲存表示和實現

2021-10-04 08:25:48 字數 3141 閱讀 1191

串是零個或多個字元的有限序列,我們可以將其看作是種特殊的線性表,其特殊性在於線性表的資料元素的型別總是字元性,字串的資料物件約束為字符集。

串的儲存方式有三種:定長順序儲存表示、堆分配儲存表示、塊鏈儲存表示。

本文主要講解串的定長順序儲存表示及其操作的實現

#include

using

namespace std;

#define true 1

#define ok 1

#define error 0

#define false 0

#define maxstrlen 255

//串的最大儲存容量定義為255

typedef

unsigned

char sstring[maxstrlen +1]

;//定義串的型別別名

typedef

int status;

//串的定長順序儲存表示,sstring[0]用來儲存串的元素個數

sstring[0]用來儲存串的元素個數

status strassign

(sstring& t,

char

* chars)

}

status strempty

(sstring s)

void

strprint

(sstring t)

status strlength

(sstring s)

status clearstring

(sstring s)

status strcopy

(sstring& t, sstring& s)

若s>t,則返回值》0;若s=t,則返回值=0;若s
status strcompare

(sstring s, sstring t)

return s[0]

- t[0]

;//如果字元全部相等,返回他們字元長度的差值

}

status strdelete

(sstring s,

int pos,

int len)

status strinsert

(sstring &s,

int pos, sstring t)

else

}

status substring

(sstring& sub, sstring s,

int pos,

int len)

return ok;

}

status concat

(sstring& t, sstring s1, sstring s2)

//兩串用t返回s1和s2聯接而成的新串。若未截斷,則返回true,否則false

else

if(s1[0]

< maxstrlen)

//兩串的長度的總和超過最大容量,串一未超過,串二被截斷

else

//兩串均超過最大容量,均被截斷,取串一中的元素

}

status index

(sstring t, sstring s,

int pos)

else

if(j > t[0]

)return i - t[0]

;else

return0;

}}

此方法的時間複雜度太大,故採用了一種改進的方法:kmp演算法具體思路如下:

故引入模式串中第j個字元的下乙個待比較的位置 定義為

注意:後乙個字元的next值比前乙個字元的next值最多大1

模式串的第乙個字元的next值為0,第二個為1,後面的需要根據定義依次判斷

例如:

關於next[j]值的計算思想,我認為西安郵電大學王燕老師的講解很是詳細!

西安郵電大學慕課

分兩部分:next值計算函式和kmp演算法

void

get_next

(sstring s,

int next)

//改進的模式匹配kmp演算法中的next[j]的獲取

else

}}

status indexkpm

(sstring t, sstring s,

int pos,

int next)

else j = next[j];}

if(j > t[0]

)return i - t[0]

;else

return0;

}

當你自墮深淵,只為尋得陰光,甘願被吞噬時,我也許該殺死那個你了

「 你本來是有機會的,但是你輸了,你不能總是活在過去 」 ——派大星

串的定長順序儲存表示

串的定長順序儲存表示 define maxstrlen 40 使用者可在255以內定義最大串長 1個位元組 typedef char sstring maxstrlen 1 0號單元存放串的長度 串採用定長順序儲存結構的基本操作 14個 sstring是陣列,故不需引用型別。此基本操作包括演算法4....

串的定長順序儲存表示

串的定長順序儲存表示是一種類似於線性表的順序儲存結構,用一組位址連續的儲存單元儲存串值的字串行。在實現時主要實現以下功能 int length sstring s 串長 bool stringconcat sstring t,sstring s1,sstring s2 用t返回s1和s2連線的串 v...

串的定長順序儲存表示

c4 1.h 串的定長順序儲存表示 define maxstrlen 40 使用者可在255以內定義最大串長 1個位元組 typedef char sstring maxstrlen 1 0號單元存放串的長度 bo4 1.c 串採用定長順序儲存結構 由c4 1.h定義 的基本操作 14個 sstri...