資料結構 11 串

2021-10-08 18:38:53 字數 2212 閱讀 9874

串是由零個或者多個字元組成的有序序列。串中字元的個數稱為串的長度,含有零個元素的串叫空串。

//這就好比乙個名為str的串

char str=

"today is greate day"

;

串中任意連續的字元組成的子串行稱為該串的子串,包含子串的串稱為主串,某個字元在串中的序號稱為這個字元的位置。通常用子串第乙個字元作為子串在主串中的位置。要注意,空格也是串字元集合中的乙個元素,由乙個或者多個空格組成的串稱為空格串(注意:空格串不是空串)

串的邏輯和線性表類似,串限定了元素為字元的線性表。從操作集上講,串和線性表有很大的區別,線性表的操作主要針對表內的某乙個元素,而串操作主要針對串內的乙個子串

一般不採用剛才的那種方式來定義並初始化乙個串。原因是僅僅以'\0'作為串結束的標記在求串長的時候需要掃瞄整個串,時間複雜度為o(n)。不如額外來定義乙個變數,專門來儲存串的長度,這樣一來求串長的時間複雜度為 o(1)

順序儲存表示結構體定義如下

#define maxsize 100

typedef

struct

str;

動態分配儲存表示

在程式執行的過程根據需要動態分配

typedef

struct

str;

這種儲存方式在使用時,需要用函式malloc()來分配乙個長度為length,型別為char的儲存空間,分配的空間可以用函式free()釋放掉。用函式malloc()分配儲存的空間如果成功,則返回乙個指向起始位址的指標,作為串的基位址,這個位址由ch指標來指向。如果分配失敗,則返回null。

動態分配儲存比順序儲存更加靈活,因此在串處理應用程式中,更為常用。

賦值操作

與普通變數賦值操作不同,串的賦值操作不能直接用=來表示,因為串是乙個陣列,必須對陣列中的每個元素進行逐一賦值。操作串的賦值操作可以用strassign()實現。其功能是將乙個常量字串賦值給str。成功返回1,失敗返回0

int

strassign

(str &str,

char

*ch)

if(len ==0)

else

else}}

}

獲取串的長度操作
int

strlength

(str str)

串的比較操作

串的比較操作是串排序應用中的核心操作。通常是用ascll碼進行比較

//串的比較操作

intstrcompare

(str s1,str s2)

}//假如兩個串完全相同,就進行長度比較

return s1.length - s2.length;

}

串的鏈結操作

將兩個串首尾相接,合併成乙個字串的操作稱為串連線操作

//串的鏈結操作

intconcat

(str& str, str str1, str str2)

while

(i < str1.length)

//這裡使用 <= 是為了連同 str2.ch最後 '\0' 一起複製

while

(j <= str2.length)

str.length = str1.length + str2.length;

return1;

}

求子串操作

求從給定串中某一位置結束的串的操作稱為求字串操作(規定開始位置總在結束位置的前邊)。

//str串中從post開始到len,由substr返回

intsubstring

(str&substr,str str,

int pos,

int len)

if(substr.ch)

if(len ==0)

else

substr.ch[j]

='\0'

; substr.length = len;

return1;

}}

串清空操作
int

clearstring

(str &str)

str.length =0;

return1;

}

《資料結構》 實驗1 1

資料結構 實驗一 vc程式設計工具的靈活使用 一 實驗目的 複習鞏固vc程式設計環境的使用,以及c 模板設計。1.回顧並掌握vc單檔案結構程式設計過程。2.回顧並掌握vc多檔案工程設計過程 3.掌握vc程式除錯過程。4.回顧c 模板和模板的程式設計。二 實驗內容 1.設計乙個單檔案結構程式完成從鍵盤...

《資料結構》 實驗1 1

資料結構 實驗一 vc程式設計工具的靈活使用 一 實驗目的 複習鞏固vc程式設計環境的使用,以及c 模板設計。1.回顧並掌握vc單檔案結構程式設計過程。2.回顧並掌握vc多檔案工程設計過程 3.掌握vc程式除錯過程。4.回顧c 模板和模板的程式設計。二 實驗內容 1.設計乙個單檔案結構程式完成從鍵盤...

1 1 資料結構簡介

資料有各種形式和大小,但通常它們可以以相同的方式來組織。比如,設想有一張清單,上面列出了需要做的事情,配方中的成分列表,某門課程的閱讀清單。儘管每種都包含不同型別的資料但它們包含的資料都以一種相似的方式進行組織 列表。列表是一種簡單的資料結構。當然,同樣還有許多其他類似的方法來組織資料。在電腦科學領...