《c語言資料結構》嚴蔚敏,吳偉民版。
以下內容為串
串或字串(sting): 由零個或者多個字元組成的有限序列。
串長度:串中字元的數目n,稱為串的長度。
空串:零個字元的串。
子串:串中任意個連續的字元組成的子串行。
主串:包含子串的的串。
空格串(blank string):由乙個或多個空格組成的串。
//--------------------------串的抽象資料型別-----------------------------------
adt string
串分三種儲存表示:定長順序儲存,堆分配儲存,塊鏈儲存表示。
塊鏈儲存需要考慮儲存密度:儲存密度 = 串值所佔的儲存位 / 實際分配的儲存位
串的定長順序儲存表示如下:
#define maxstrlen 255 // 使用者可在255以內定義最大串長
typedef unsigned char sstring[maxstrlen + 1]; // 0號單元存放串的長度
status concat(sstring &t, sstring s1, sstring s2) else if (s1[0] < maxstrlen) else
return uncut;
}status substring(sstring &sub, sstring s, int pos, int len)
sub[1..len] = s[pos..pos + len + 1];
sub[0] = len;
return ok;
}
串的堆分配儲存表示如下:
//-------------------------------------串的堆分配儲存表示----------------------------------------
typedef struct hstring;
//------------------------------------基本操作的函式原型說明-------------------------------------
// 把字串t插入到字串s的pos位置
status strinsert(hstring &s, int pos, hstring t);
// 生成乙個其值等於串常亮chars的串t
status strassign(hstring &t, char* chars);
// 返回s的元素個數,稱為串的長度
int stringlength(hstring s);
// 若s>t,則返回值》0;若s=t,則返回值=0;若ss.length + 1)
if (t.length)
// 為插入t而騰出位置
for (i = s.length - 1; i >= pos - 1; --i)
// 插入
s.ch[pos-1..pos + t.length - 2] = t.ch[0..t.length - 1]
s.length += t.length;
} return ok;
}status strassign(hstring &t, char *chars)
// 求chars的長度i
for (i = 0, c = chars; c; ++i, ++c)
if (!i) else
t.ch[0..i-1] = chars[0..i-1];
t.length = i;
} return ok;
}int strlength(hstring s)
int strcompare(hstring s, hsting t)
if (sub.ch)
if (!len) else
return ok;
}//-------------------------------------------串的塊鏈儲存表示-----------------------------------
#define chunksize 80 // 可有使用者定義塊的大小
typedef struct chunk chunk;
typedef struct lstring;
串的模式匹配演算法如下:
int index(sstring s, sstring t, int pos) else }
if (j > t[0]) else
}int index_kmp (sstring s, sstring t, int pos) else
} if (j > t[0]) else
}void get_next(sstring t, int &next) else }}
void get_nextval(sstring t, int &nextval) else
} else
}}
串的應用: 文字編輯, 建立詞索引 資料結構實驗六 串
1 實驗目的 1 掌握串的概念。2 理解串的儲存結構。3 能夠基於串的相應儲存結構實現串的常用操作。2 實驗環境與裝置 已安裝visual studio 2010 或其以上版本 整合開發環境的計算機。3 實驗原理 1 串的定長順序儲存結構。2 串的常用操作實現。4 實驗內容 基於串的定長順序儲存結構...
資料結構 串 C語言
串的概述 串 字串 由n n 0 個字元組成的有限序列。一般記作s s0,s1,s2,sn 1 其中s稱作串名,n稱作串的長度,雙引號括起來的字串行稱作串的值。子串 乙個串中任意個連續的字元組成的子串行。主串 包含子串的串稱為子串的主串。該字元在串中的位置 乙個字元在乙個串中的位置序號 0 串相等 ...
資料結構(C語言) 串
二 串的儲存結構 串的基本運算的實現 串是字串的簡稱,它的每個資料元素都由乙個字元組成。串是一種特殊的線性表。字串簡稱為串,是一種特殊的線性表,它的資料元素僅由字元組成。1 串的定義 串 string 是由零個或任意多個字元組成的有限序列,一般記為 s a1a2a3.an n 0 其中,s為串名,在...