數據結構里的串是什么東西?


  • 上個月終於把棧和隊列專題完成了,其實從開始到現在,我們主要學到的東西其實就是數組與鏈表的各種變種。那么這個月開始,我們輕松點,學習些別的東西。那么開啟新的專題:串。

早先的計算機在被發明時,主要作用是做一些科學和工程的計算工作,也就是現在我們理解的計算器,只不過它比小小計算器功能更強大、速度更快一些。后來發現,在計算機上作非數值處理的工作越來越多,使得我們不得不需要引入對字符的處理。於是就有了字符串的概念。

比如我們現在常用的搜索引擎,當我們在文本框中輸入“簡明 現代"時,它已經把我們想要的“簡明現代魔法”列在下面了(聯想詞)。顯然這里網站作了一個字符串査找匹配的工作:

今天我們就是來研究“串”這樣的數據結構。先來看定義。

串(string)是由零個或多個宇符組成的有限序列,又名叫字符串。

一般記為s = "a,a2……an" (n>0),其中,s是串的名稱,用雙引號(有些書中也用單引號)括起來的字符序列是串的值,注意單引號不屬於串的內容。ai(1<= i<= n)可以是字母、數字或其他字符,i就是該字符在串中的位置。串中的字符數目n稱為串的長度,定義中談到“有限”是指長度n是一個有限的數值。零個字符的串稱為空串(null string),它的長度為零,可以直接用兩雙引號一表示,也可以用希臘Φ字母來表示。所謂的序列,說明串的相鄰字符之間具有前驅和后繼的關系。

一些特別的字符串

還有一些概念需要解釋。

空格串,是只包含空格的。注意它與空串的區別,空格串是有內容有長度的,而且可以不止一個空格。

子串與主串,串中任意個數的連續字符組成的子序列稱為該串的子串,相應地,包含子串的串稱為主串。

子串在主串中的位置就是子串的第一個字符在主串中的序號。

  •  
    比如在英語單詞中,即使是friend也有個end,即使是believe也有個lie。

這里的"end", "lie"其實可以認為是"friend"、"believe"這些單詞字符串的子串。

比起前面說到的鏈表,串簡單吧?先難后易,是一種很好的學習方法。

延伸閱讀

此文章所在專題列表如下:

  1. 數據結構里的串是什么東西?
  2. 如何比較串的大小
  3. 串的抽象數據類型ADT
  4. 串的順序存儲結構
  5. 串最基本的5個操作的C實現
  6. 尋找子串在主串中的位置
  7. 如何在串中插入串
  8. 如何在串中刪除特定長度的子串
  9. 字符串中的子串替換
  10. 題外話:談談malloc()和free()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM