小蚂蚁学习数据结构(15)——串的认识

概念:函数

    串(字符串):是由0个或多个字符组成的有限序列。spa

    由双引号括起来 如: char str[] = "abcd";.net

串相等的条件:设计

    只有当两个串的长度相等,而且各个对应位置的字符都相等时才相等。对象

串的逻辑结构:blog

    串和线性表是很是类似的。ci

    区别:串的数据对象约定是字符集。字符串


线性表的基本操做:get

    以“单个元素”为操做对象博客


串的基本操做:

    以“串的总体”做为操做对象

    在线性表中,一般是以其中的单个元素做为操做对象的,好比删除一个元素,插入一个元素。而在串中的基本操做,一般是以“串的总体”做为操做对象的,好比:在串中查找某一个子串,求取一个子串,在串的某个位置插入一个子串以及删除某一个子串等。

串的储存表示:

    由于串是特殊的线性表,故其存储结构与线性表的存储结构相似,只不过组成串的结点是单个字符

定长顺序存储表示

    用一组地址连续的存储单元依次存放串中的字符序列。

    缺点

        1,须要事先预约义串的最大长度,但这通常很难作到。

        2,因为定义了串的最大长度,使得串的某些操做受限,由于一旦超出了最大长度,就会发生“截断”,好比:连接、插入等操做。

解决办法: 不设定最大长度,使用动态分配串的储存空间。

堆分配存储表示:

    使用 malloc和realloc等函数在堆中,动态分配存储空间。不再用担忧被截断的问题。

    优势:

        堆存储结构既有顺序存储结构的特色,处理方便,操做中对串的长度又没有任何限制,更加灵活。

        堆分配存储表示为高级程序设计语言说采用。

块链存储表示

    说白了,就是用单链表来储存串。

    优势:便于插入和删除。

    缺点:空间利用率低。

    为了提升空间利用率,可以使每一个节点存放多个字符,成为块链结构。这样作空间复杂度更少一些,可是处理的复杂度会增长不少。


学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog