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

来源:网页教学基地 时间:2017-09-17 11:36:05  浏览次数:0

概念:

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

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

串相等的条件:

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

串的逻辑结构:

    串和线性表是非常相似的。

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


线性表的基本操作:

    以“单个元素”为操作对象


串的基本操作:

    以“串的整体”作为操作对象

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

串的储存表示:

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

定长顺序存储表示

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

    缺点

        1,需要事先预定义串的最大长度,但这一般很难做到。

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

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

堆分配存储表示:

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

    优点:

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

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

块链存储表示

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

    优点:便于插入和删除。

    缺点:空间利用率低。

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


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



最近相关