概念:函數
串(字符串):是由0個或多個字符組成的有限序列。spa
由雙引號括起來 如: char str[] = "abcd";.net
串相等的條件:設計
只有當兩個串的長度相等,而且各個對應位置的字符都相等時才相等。對象
串的邏輯結構:blog
串和線性表是很是類似的。ci
區別:串的數據對象約定是字符集。字符串
線性表的基本操做:get
以「單個元素」爲操做對象博客
串的基本操做:
以「串的總體」做爲操做對象
在線性表中,一般是以其中的單個元素做爲操做對象的,好比刪除一個元素,插入一個元素。而在串中的基本操做,一般是以「串的總體」做爲操做對象的,好比:在串中查找某一個子串,求取一個子串,在串的某個位置插入一個子串以及刪除某一個子串等。
串的儲存表示:
由於串是特殊的線性表,故其存儲結構與線性表的存儲結構相似,只不過組成串的結點是單個字符。
定長順序存儲表示
用一組地址連續的存儲單元依次存放串中的字符序列。
缺點:
1,須要事先預約義串的最大長度,但這通常很難作到。
2,因爲定義了串的最大長度,使得串的某些操做受限,由於一旦超出了最大長度,就會發生「截斷」,好比:連接、插入等操做。
解決辦法: 不設定最大長度,使用動態分配串的儲存空間。
堆分配存儲表示:
使用 malloc和realloc等函數在堆中,動態分配存儲空間。不再用擔憂被截斷的問題。
優勢:
堆存儲結構既有順序存儲結構的特色,處理方便,操做中對串的長度又沒有任何限制,更加靈活。
堆分配存儲表示爲高級程序設計語言說採用。
塊鏈存儲表示
說白了,就是用單鏈表來儲存串。
優勢:便於插入和刪除。
缺點:空間利用率低。
爲了提升空間利用率,可以使每一個節點存放多個字符,成爲塊鏈結構。這樣作空間複雜度更少一些,可是處理的複雜度會增長不少。
學PHP的小螞蟻 博客 http://my.oschina.net/woshixiaomayi/blog