概念:
串(字符串):是由0个或多个字符组成的有限序列。
由双引号括起来 如: char str[] = "abcd";
串相等的条件:
只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等。
串的逻辑结构:
串和线性表是非常相似的。
区别:串的数据对象约定是字符集。
线性表的基本操作:
以“单个元素”为操作对象
串的基本操作:
以“串的整体”作为操作对象
在线性表中,通常是以其中的单个元素作为操作对象的,比如删除一个元素,插入一个元素。而在串中的基本操作,通常是以“串的整体”作为操作对象的,比如:在串中查找某一个子串,求取一个子串,在串的某个位置插入一个子串以及删除某一个子串等。
串的储存表示:
因为串是特殊的线性表,故其存储结构与线性表的存储结构类似,只不过组成串的结点是单个字符。
定长顺序存储表示
用一组地址连续的存储单元依次存放串中的字符序列。
缺点:
1,需要事先预定义串的最大长度,但这一般很难做到。
2,由于定义了串的最大长度,使得串的某些操作受限,因为一旦超出了最大长度,就会发生“截断”,比如:链接、插入等操作。
解决办法: 不设定最大长度,使用动态分配串的储存空间。
堆分配存储表示:
使用 malloc和realloc等函数在堆中,动态分配存储空间。再也不用担心被截断的问题。
优点:
堆存储结构既有顺序存储结构的特点,处理方便,操作中对串的长度又没有任何限制,更加灵活。
堆分配存储表示为高级程序设计语言说采用。
块链存储表示
说白了,就是用单链表来储存串。
优点:便于插入和删除。
缺点:空间利用率低。
为了提高空间利用率,可使每个节点存放多个字符,成为块链结构。这样做空间复杂度更少一些,但是处理的复杂度会增加很多。
学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog