C語言資料結構 六 ,串

2021-09-13 19:49:23 字數 2519 閱讀 4063

《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為串名,在...