当前位置: 首页> 房产> 家装 > 【串的相关概念】

【串的相关概念】

时间:2025/7/15 1:39:59来源:https://blog.csdn.net/2401_82676816/article/details/141786589 浏览次数:0次

1.前情回顾:

在这里插入图片描述

2.串的定义

在这里插入图片描述
注意这里的字符是任意字符:包括特殊字符和空格

在这里插入图片描述

2.1串的相关术语

在这里插入图片描述

2.2分析如下:

  • 子串与主串 可以类比 子集与集合的关系
    空串也是子串的一种

在这里插入图片描述

  • 注意空格串空串的区别

  • 位置是从1开始设定的(第一个位置开始)

  • 案例剖析
    在这里插入图片描述
    在这里插入图片描述

2.3串相等

在这里插入图片描述
在这里插入图片描述
注意
在这里插入图片描述

3. 串的类型定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1.这里注意:index:即字符串的定位操作十分重要
    (若主串S存在与串T值相同的子串,则返回它在主串S中第一次出现的位置

4.串的 顺序存储 与 链式存储

4.1串的顺序存储

一般分为静态数组存储,动态数组存储;两者都可以,但静态数组更加常见,所以本篇着重介绍静态数组的存储方式。

4.1.1三种顺序存储的方法:
  • 由于一个char类型8bit,如果使用一个char变量来表示数组长度,则只能表示0~256这个区间
    在这里插入图片描述
    方案四较为常用
    代码如下:
 //1.串的顺序存储:
#define  MAXSIZE 255//预定义最大串长为255//1.串类型定义(静态数组)
typedef struct 
{char ch[MAXSIZE+1];//每个空间存储一个字符//这里加1的目的是,串的有效元素要从下标1开始存起,方便管理,长度最大仍然为255int length;//串的实际长度
}sstring;
//sstring:结构体别名,用来定义串

4.2串的链式存储

  • 第一种方案:每个结点存1个字符,不建议使用,存储密度太低
//2.串的链式存储(每个结点存1个字符)
//存储密度低,不建议使用
typedef struct StringNode
{char ch;//每个数据域存储一个字符struct StringNode * next;//串的指针域
}stringNode,*string;
//stringNode:结构体别名,用来定义串结点
//string:结构体指针别名,用来定义串结点指针

在这里插入图片描述

  • 优化后的方案:块链结构,即一个数据域可以存储多个字符,其中块的大小可以自己定义,提高了存储密度
//2.串的链式存储(每个结点存多个字符)
#define CHUNKSIZE 80//块的大小可由用户定义
//<1>串的结点结构定义
typedef struct Chunk 
{char ch[CHUNKSIZE];//块中存储的字符数组struct Chunk* next;
}Chunk;//<2>串的定义
typedef struct 
{ Chunk* head, * tail; //串的头指针和尾指针int curlen; //串的当前长度
}LString; // 字符串的块链结构
//LString:用来定义一个整串

由于80个空间的块链不好表示,故以四个char来表示:
在这里插入图片描述

关键字:【串的相关概念】

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: