C語言數據結構——第四章 串

4、串

 4.1-串的基本概念

  • 串的定義

    串是由數字、字母或其餘字符組成的有限序列,通常記爲函數

      StringName = 「a[0]a[1]a[2]···a[i]···a[n-1]」(n>0,0<=i<=n-1)指針

    其中StringName是串名,雙引號內的序列是該串的值,n爲串的長度,i爲某一字符在該串中的下標對象

  • 串的經常使用術語
  1. 串的長度:串中包含字符個數即爲串的長度
  2. 空串:串中不包含任何字符時被稱爲空串,此時串的長度爲0
  3. 空格串:由一個或多個空格組成的串被稱爲空格串,它的長度是串中空格的個數
  4. 子串:串中任意個連續字符組成的子序列被稱爲該串的子串,故其長度爲1
  5. 主串:包含子串的串被稱爲主串
  6. 真子串:串的全部子串中,除其自身外,其餘子串都被稱爲該串的真子串
  7. 子串的位置:子串的第一個字符在主串中對應的位置被稱爲子串在主串中的位置,簡稱子串的位置
  8. 串相等:當兩個串的長度相等且對應位置的字符依次相同時,咱們稱這兩個串是相等的。
  • 串的抽象數據類型

    串的邏輯結構與線性表很類似,單穿的數據元素只能爲字符,所以咱們認爲串是一種特殊的線性表,在串的基本操做中,咱們一般以總體爲操做對象,這和線性表以單個元素做爲操做對象不一樣。變量

 4.2-定長順序存儲表示

   相似於線性表的順序存儲結構,用一組地址連續的存儲單元存儲串值的字符序列。在串的定長順序存儲結構中,按照預約義的大小,爲每一個定義的串變量分配一個固定長度的存儲區。串的實際長度可在這預約義長度的範圍內隨意,超過預約義長度的串值則被捨去,稱之爲「截斷」數據類型

 4.3-堆分配存儲表示

    這種存儲表示的特色是,仍以一組地址連續的存儲單元存放串值字符序列,但它們的存儲空間是在程序執行過程當中進行動態分配而得。利用函數爲每一個新產生的串分配一塊實際串長所需的存儲空間,若分配成功,則返回一個指向起始地址的指針,做爲串的基址,同時爲了之後處理方便,約定串長也做爲存儲結構的一部分。程序

 4.4-串的塊鏈存儲表示

    和線性表的鏈式存儲結構相相似,也可採用鏈表方式存儲串值。因爲串結構的特殊性——結構中的每一個數據元素是一個字符,則用鏈表存儲串值時,存在一個「結點大小」的問題,即每一個結點能夠存放一個字符,也能夠存放多個字符。爲了方便進行串的操做,當以鏈表存儲串值時,除頭指針外還能夠附設一個尾指針指示鏈表中的最後一個結點,並給出當前串的長度。鏈表

相關文章
相關標籤/搜索