串 - 串的存储结构 - 串的顺序存储

 我来答
会哭的礼物17
2022-10-08 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6211
采纳率:100%
帮助的人:34.8万
展开全部

  因为串是特殊的线性表 故其存储结构与线性表的存储结构类似 只不过由于组成串的结点是单个字符 所以存储时有一些特殊的技巧

  串的顺序存储

   顺序串

  串的顺序存储结构简称为顺序串

  与顺序表类似 顺序串是用一组地址连续的存储单元来存储串中的字符序列 因此可用高级语言的字符数组来实现 按其存储分

  配的不同可将顺序串分为如下两类

  ( )静态存储分配的顺序串

  ( )动态存储分配的顺序串

   静态存储分配的顺序串

  ( )直接使用定长的字符数组来定义

  该种方法顺序串的具体描述

  #define MaxStrSize //该值依赖于应用 由用户定义

  typedef char SeqString[MaxStrSize]; //SeqString是顺序串类型

  SeqString S; //S是一个可容纳 个字符的顺序串

  注意

  ①串值空间的大小在编译时刻就已确定 是静态的 难以适应插入 链接等操作

  ②直接使用定长的字符数组存放串内容外 一般可使用一个不会出现在串中的特殊字符放在串值的末尾来液山表示串的结束 所以串空间

  最大值为MaxStrSize时 最多只能放MaxStrSize 个字符

  【例】C语言中以字符 \ 表示串值的终结

  

  ( )类似顺序表的定义

  直接使用定长的字符数组存放串内容外 可用一个整数来表示串的长度 此时顺序串的类型定义完全和顺序表类似

  typedef struct{

  char ch[MaxStrSize]; //可容纳 个字符 并依次存储在ch[ n]中

  int length;

  }SeqString;

  注意

  ①串的长度减 的位置就是串值的最后一个字符的位置

  ②这种表示的优点是涉及串长的操作速度快

   动态存储分配的顺序串

  顺序串的字符数组空间可使用C语磨埋搜言的malloc和free等动态存储管理函数 来根据实际需要动态地分配和释放

  这样定义的顺序串类型亦有两种形式

  ( )较简单的定义

  typedef char *string; //C中瞎历的串库 相当于使用此类型定义串

  ( )复杂定义

  typedef struct{

  char *ch;// 若串非空 则按实际的串长分配存储区 否则ch为NULL

  int length;

  }HString;

  串的顺序存储操作

lishixinzhi/Article/program/sjjg/201311/23914

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式