2024-11-16 串的存储结构

一、顺序存储。

1.首先定一个静态数组,然后定义i记录串的实际长度。(缺点:长度不可变)

2.使用malloc申请动态空间,定义指针指向串的地址。(需手动ferr)

方案一: 数组末尾记录长度

方案二:ch0充当length。首位置记录(字符的位序与数组下标相同)

方案三:末尾放/0,

二、链式存储。

1.每个结点存一个字符,然后用指针指向下一个结点。(存储密度低。改良方法,每个结点存储多个字符。若存不满,用特殊字符来补充)

三、基于顺序存储实现的基本操作

1.StrAssign(&T,chars):赋值操作。把串T赋值为chars。

StrCopy(&TS):复制操作。由串S复制得到串T。

StrEmpty(S):判空操作。若S为空串,则返回TRUE,否则返回

FALSE.StrLength(s):求串长。返回串S的元素个数。

ClearString(&s):清空操作。将S清为空串。

DestroyString(&s):销毁串。将串S销毁(回收存储空间)

Concat(&TS1,S2):串联接。用T返回由S1和S2联接而成的新串

2.求字串,

串SubString(&Sub,S,pos,len)求子串。用Sub返回串S的第pos个字符起长度为len的子串.

首先判断子串的长度是否越界。然后使i等于要返回的子串的首位序,利用循环,依次遍历,找到位序为字串首位序加子串的长度的字母。存放至新串中,并使新串长度等于子串的长度,返回新串。

3.比较两个串的大小。

StrCompare(s,T):比较操作。若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0。

利用循环,依次遍历两个串的每一个字符,并比较。如果字符不相等,则相减,根据返回值来判断大小。如果相等,则比较下一个字符。如果所有字符都相等,则长度大的串更大。如果长度也相等,则两个字符串相同。

4.在主串中找到子串的位置。

Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S中第一次出现的位置;否则函数值为0。

利用前两个操作,利用while循环在主串中从头取出与子串相同大小的子串,再依次比较两个子串是否相同,相同则返回,不同则取出下一个大小相同的子串,再进行比较。

总结:

相关推荐
星恒随风1 小时前
C++ STL 详解:list 的使用、迭代器失效、模拟实现与 vector 对比
开发语言·数据结构·c++·笔记·学习·list
梅梅绵绵冰1 小时前
算法题-矩阵
数据结构·算法·矩阵
奋发向前wcx12 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
ChaoZiLL17 小时前
我的数据结构4-栈和队列
数据结构
miller-tsunami17 小时前
顺序表相关知识点
数据结构·顺序表
华玥作者20 小时前
uniapp 万条数据不卡顿:我写了个虚拟列表组件 hy-list,原生支持瀑布流
数据结构·uni-app·list·vue3
2401_8414956420 小时前
【数据结构】B*树
数据结构·c++·b树·算法·删除·插入·三分分裂
晚笙coding20 小时前
LeetCode 108:将有序数组转换为二叉搜索树 —— 从数组到平衡二叉树的递归构造
数据结构·算法·leetcode
不如语冰21 小时前
AI大模型入门-模块导入import
数据结构·人工智能·pytorch·python
岑梓铭21 小时前
《考研408数据结构》第七章(7.1 查找:顺序查找、折半查找、分块查找)复习笔记
数据结构·笔记·考研·408·ds·查找