今天就跟大家聊聊有關(guān)串的結(jié)構(gòu)是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供番禺企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站制作、HTML5、小程序制作等業(yè)務(wù)。10年已為番禺眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
串是一種線性存儲結(jié)構(gòu),因為字符串中的字符之間也具有“一對一”的邏輯關(guān)系。只不過,與之前所學(xué)的線性存儲結(jié)構(gòu)不同,串結(jié)構(gòu)只用于存儲字符類型的數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu)中,字符串要單獨用一種存儲結(jié)構(gòu)來存儲,稱為串存儲結(jié)構(gòu)。這里的串指的就是字符串。
嚴(yán)格意義上講,串存儲結(jié)構(gòu)也是一種線性存儲結(jié)構(gòu),因為字符串中的字符之間也具有"一對一"的邏輯關(guān)系。只不過,與之前所學(xué)的線性存儲結(jié)構(gòu)不同,串結(jié)構(gòu)只用于存儲字符類型的數(shù)據(jù)。
無論學(xué)習(xí)哪種編程語言,操作最多的總是字符串。數(shù)據(jù)結(jié)構(gòu)中,根據(jù)串中存儲字符的數(shù)量及特點,對一些特殊的串進(jìn)行了命名,比如說:
空串:存儲 0 個字符的串,例如 S = ""(雙引號緊挨著);
空格串:只包含空格字符的串,例如 S = " "(雙引號包含 5 個空格);
子串和主串:假設(shè)有兩個串 a 和 b,如果 a 中可以找到幾個連續(xù)字符組成的串與 b 完全相同,則稱 a 是 b 的主串,b 是 a 的子串。例如,若 a = "shujujiegou",b = "shuju",由于 a 中也包含 "shuju",因此串 a 和串 b 是主串和子串的關(guān)系;
需要注意的是,空格串和空串不同,空格串中含有字符,只是都是空格而已。另外,只有串 b 整體出現(xiàn)在串 a 中,才能說 b 是 a 的子串,比如 "shujiejugou" 和 "shuju" 就不是主串和子串的關(guān)系。
另外,對于具有主串和子串關(guān)系的兩個串,通常會讓你用算法找到子串在主串的位置。子串在主串中的位置,指的是子串首個字符在主串中的位置。
例如,串 a = "shujujiegou",串 b = "jiegou",通過觀察,可以判斷 a 和 b 是主串和子串的關(guān)系,同時子串 b 位于主串 a 中第 6 的位置,因為在串 a 中,串 b 首字符 'j' 的位置是 6。
串存儲結(jié)構(gòu)的具體實現(xiàn)
存儲一個字符串,數(shù)據(jù)結(jié)構(gòu)包含以下 3 種具體存儲結(jié)構(gòu):
定長順序存儲:實際上就是用普通數(shù)組(又稱靜態(tài)數(shù)組)存儲。例如 C 語言使用普通數(shù)據(jù)存儲字符串的代碼為 char a[20] = "data.biancheng.net";
堆分配存儲:用動態(tài)數(shù)組存儲字符串;
塊鏈存儲:用鏈表存儲字符串;
看完上述內(nèi)容,你們對串的結(jié)構(gòu)是什么有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。