串是由數字、字母或其餘字符組成的有限序列,通常記爲函數
StringName = 「a[0]a[1]a[2]···a[i]···a[n-1]」(n>0,0<=i<=n-1)指針
其中StringName是串名,雙引號內的序列是該串的值,n爲串的長度,i爲某一字符在該串中的下標對象
串的邏輯結構與線性表很類似,單穿的數據元素只能爲字符,所以咱們認爲串是一種特殊的線性表,在串的基本操做中,咱們一般以總體爲操做對象,這和線性表以單個元素做爲操做對象不一樣。變量
相似於線性表的順序存儲結構,用一組地址連續的存儲單元存儲串值的字符序列。在串的定長順序存儲結構中,按照預約義的大小,爲每一個定義的串變量分配一個固定長度的存儲區。串的實際長度可在這預約義長度的範圍內隨意,超過預約義長度的串值則被捨去,稱之爲「截斷」數據類型
這種存儲表示的特色是,仍以一組地址連續的存儲單元存放串值字符序列,但它們的存儲空間是在程序執行過程當中進行動態分配而得。利用函數爲每一個新產生的串分配一塊實際串長所需的存儲空間,若分配成功,則返回一個指向起始地址的指針,做爲串的基址,同時爲了之後處理方便,約定串長也做爲存儲結構的一部分。程序
和線性表的鏈式存儲結構相相似,也可採用鏈表方式存儲串值。因爲串結構的特殊性——結構中的每一個數據元素是一個字符,則用鏈表存儲串值時,存在一個「結點大小」的問題,即每一個結點能夠存放一個字符,也能夠存放多個字符。爲了方便進行串的操做,當以鏈表存儲串值時,除頭指針外還能夠附設一個尾指針指示鏈表中的最後一個結點,並給出當前串的長度。鏈表