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