码迷,mamicode.com
首页 > 编程语言 > 详细

C语言数据结构——第四章 串

时间:2020-01-22 23:51:25      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:顺序   分配   过程   动态   固定   函数   style   下标   语言   

四、串

 4.1-串的基本概念

  • 串的定义

    串是由数字、字母或其他字符组成的有限序列,一般记为

      StringName = “a[0]a[1]a[2]···a[i]···a[n-1]”(n>0,0<=i<=n-1)

    其中StringName是串名,双引号内的序列是该串的值,n为串的长度,i为某一字符在该串中的下标

  • 串的常用术语
  1. 串的长度:串中包含字符个数即为串的长度
  2. 空串:串中不包含任何字符时被称为空串,此时串的长度为0
  3. 空格串:由一个或多个空格组成的串被称为空格串,它的长度是串中空格的个数
  4. 子串:串中任意个连续字符组成的子序列被称为该串的子串,故其长度为1
  5. 主串:包含子串的串被称为主串
  6. 真子串:串的所有子串中,除其自身外,其他子串都被称为该串的真子串
  7. 子串的位置:子串的第一个字符在主串中对应的位置被称为子串在主串中的位置,简称子串的位置
  8. 串相等:当两个串的长度相等且对应位置的字符依次相同时,我们称这两个串是相等的。
  • 串的抽象数据类型

    串的逻辑结构与线性表很相似,单穿的数据元素只能为字符,因此我们认为串是一种特殊的线性表,在串的基本操作中,我们通常以整体为操作对象,这和线性表以单个元素作为操作对象不同。

 4.2-定长顺序存储表示

   类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。在串的定长顺序存储结构中,按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。串的实际长度可在这预定义长度的范围内随意,超过预定义长度的串值则被舍去,称之为“截断”

 4.3-堆分配存储表示

    这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中进行动态分配而得。利用函数为每个新产生的串分配一块实际串长所需的存储空间,若分配成功,则返回一个指向起始地址的指针,作为串的基址,同时为了以后处理方便,约定串长也作为存储结构的一部分。

 4.4-串的块链存储表示

    和线性表的链式存储结构相类似,也可采用链表方式存储串值。由于串结构的特殊性——结构中的每个数据元素是一个字符,则用链表存储串值时,存在一个“结点大小”的问题,即每个结点可以存放一个字符,也可以存放多个字符。为了方便进行串的操作,当以链表存储串值时,除头指针外还可以附设一个尾指针指示链表中的最后一个结点,并给出当前串的长度。

 

 

C语言数据结构——第四章 串

标签:顺序   分配   过程   动态   固定   函数   style   下标   语言   

原文地址:https://www.cnblogs.com/yachao30/p/12229782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!