数据结构--串的定义和基本操作

news2024/9/25 23:18:52

数据结构–串的定义和基本操作

注:数据结构三要素――逻辑结构、数据的运算、存储结构(物理结构)

存储结构不同,运算的实现方式不同 \color{pink}存储结构不同,运算的实现方式不同 存储结构不同,运算的实现方式不同

串的定义

串 \color{red}串 ,即 字符串 ( S t r i n g ) \color{red}字符串 (String) 字符串(String是由零个或多个 字符 \color{red}字符 字符组成的有限序列。一般记为s =‘a1a2……a,’ (n ≥0)
其中,S是 串名 \color{red}串名 串名,单引号括起来的字符序列是串的值;a;可以是字母、数字或其他字符;串中字符的个数n称为 串的长度 \color{red}串的长度 串的长度。n =0时的串称为空串(用 ∅ \empty 表示)。

Eg:
S = "2023/7/2"
T = 'Succeed in the postgraduate entrance examination'

注 : 有的地方用双引号(如 J a v a 、 C ) 有的地方用单引号(如 P y t h o n ) \color{green}注:有的地方用双引号(如Java、C)有的地方用单引号(如Python) :有的地方用双引号(如JavaC)有的地方用单引号(如Python)

子串:串中任意个 连续的 \color{red}连续的 连续的字符组成的子序列。
主串:包含子串的串。
字符在主串中的位置:字符在串中的序号。
子串在主串中的位置:子串的第一个字符在主串中的位置。
注意 : 位序从 1 开始而不是从 0 开始 \color{purple}注意:位序从1开始而不是从0开始 注意:位序从1开始而不是从0开始

空串v.s空格串:
M='' M是空串
N=' ' N是由三个空格字符组成的空格串,每个空格字符占1B

串v.S线性表

串是一种特殊的线性表,数据元素之间呈线性关系

串的数据对象限定为字符集(如中文字符、英文字符、数字字符、标点字符等)
串的基本操作,如增删改查等 通常以子串为操作对象 \color{red}通常以子串为操作对象 通常以子串为操作对象

通常以“子串”为增删改查的操作对象 \color{pink}通常以“子串”为增删改查的操作对象 通常以子串为增删改查的操作对象

人类的语言通常要多个字符组成的序列才有现实意义 \color{pink}人类的语言通常要多个字符组成的序列才有现实意义 人类的语言通常要多个字符组成的序列才有现实意义

串的基本操作

假设有串T=“”,S=“iPhone 11 Pro Max?””,W="Pro"StrAssign(&T,chars):赋值操作。把串T赋值为chars。StrCopy(&T,S):复制操作。由串s复制得到串干。
StrEmpty(S):判空操作。若s为空串,则返回TRUE,否则返FALSE。StrLength(S):求串长。返回串s的元素个数。
ClearString(&S):清空操作。将s清为空串。
DestroyString(&S):销毁串。将串s销毁(回收存储空间)。Concat(&T,S1,S2):串联接。用T返回由S1和S2联接而成的新串
SubString(&Sub,S,pos,len):求子串。用sub返回串S的第pos个字符起长度为len的子串。
I n d e x ( S , T ) \color{red}Index(S,T) Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S中第一次出现的位置;否则函数值为0。
S t r C o m p a r e ( S , T ) \color{red}StrCompare(S,T) StrCompare(S,T):比较操作。若S>T,则返回值>0;若S=T,则返回值=0;若S<T,则返回值<0。

Eg:
执行基本操作Concat(&T, S,W)后,T="iPhone 11 Pro Max?Pro”
执行基本操作 SubString(&T ,S, 4,6)后,T=“one 11”
执行基本操作Index(s, W)后,返回值为11

串的比较操作

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

规则:

从第一个字符开始往后依次对比,先出现更大字符的串就更大
长串的前缀与短串相同时,长串更大
只有两个串完全相同时,才相等

字符集编码

y = f ( x ) 字符集 : 函数定义域编码 : 函数映射规则 f y : 对应的二进制数 \color{red}y = f(x) 字符集:函数定义域编码:函数映射规则fy:对应的二进制数 y=f(x)字符集:函数定义域编码:函数映射规则fy:对应的二进制数
任何数据存到计算机中一定是二进制数。
需要确定一个字符和二进制数的对应规则这就是“编码”
“字符集”:
英文字符-—ASCII字符集
中英文―—Unicode字符集

基于同一个字符集 , 可以有多种编码方案 , 如 : U T F − 8 , U T F − 16 \color{pink}基于同一个字符集,可以有多种编码方案,如:UTF-8,UTF-16 基于同一个字符集,可以有多种编码方案,:UTF8UTF16

注:采用不同的编码方式,每个字符所占空间不同,考研中只需默认每个字符占1B即可

拓展:乱码问题

编码规则不同导致

知识点回顾与重要考点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709868.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Java制作简单的记事本

目录 前言 主界面设计 功能实现 打开 另存为 保存 查找 替换 成员变量 其他方法 警告弹窗 不移动光标更新文本框内容 源代码 总结 转载请注明出处&#xff0c;尊重作者劳动成果。 前言 考完试想写敲一下代码就写了一下这个程序&#xff0c;整个也是写了怎么久…

JavaEE语法第二章之多线程(初级一)

一、认识线程 1.1线程的概念 一个线程就是一个 "执行流"。每个线程之间都可以按照顺序执行自己的代码. 多个线程之间 "同时"执行着多份代码。 一家公司要去银行办理业务&#xff0c;既要进行财务转账&#xff0c;又要进行福利发放&#xff0c;还得进行缴…

Docker常见问题集合

一、Docker安装 1、yum 安装 1&#xff09;更新yum包到最新 yum update2&#xff09;安装软件需要的软件&#xff0c;yum-util&#xff08;提供 yum-config-manager 功能&#xff09;&#xff0c;device-mapper-persistent-data、lvm2&#xff08;devicemapper 驱动依赖&…

mmdetection踩坑记录

1.mmcv-full和mmdetection的版本匹配问题 Readme里应该会给可复现的版本&#xff0c;一定要按照readme里的&#xff0c;这里是一些版本对应关系&#xff0c;像我的mmdet是2.3.0&#xff0c;我就只能装1.0.5的mmcv-full 表格来源&#xff1a;https://blog.csdn.net/qq_55957975/…

高频-测试岗面试题,软件测试面试常问面试题(付答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 测试流程&#xf…

【Zynq】Xilinx SDK设置编码方式

举例&#xff1a;将Xilinx SDK设置为UTF-8编码 工具栏->Window->Preferences

基于Tensorflow和Keras实现卷积神经网络CNN并进行猫狗识别

文章目录 一、环境配置1、安装Anaconda2、配置TensorFlow、Keras 二、猫狗数据集分类建模3.1 猫狗图像预处理3.2 猫狗分类的实例——基准模型3.1 构建神经网络3.2 配置优化器3.3 图片格式转化3.4 训练模型3.5 保存模型3.6 可视化 三、数据增强四、dropout 层五、参考资料 一、环…

Openresty原理概念篇(十五)Lua 规则和 NGINX 配置文件产生冲突怎么办?

一 Lua 规则和 NGINX 配置文件产生冲突怎么办? ① OpenResty 的名字和语言 说明&#xff1a; 了解openresty的发展史 ② 配置文件的规则优先级 1) 如何各司其职2) 都能满足功能,该如何取舍 理解&#xff1a; 1) rewrite ... break 到POST_WRITE阶段2) 而rewrite_by_lua*…

JAVA的DIFF算法

首先看一下我的文件结构 1.EnumType 类 public enum EnumType {ADD("ADD"),MODIFIED("MODIFIED"), DELETED("DELETED");//创建私有变量private String type;EnumType(String type) {this.type type;} }2.OperationType类 public class Operati…

vue封装svg组件来修改svg图片颜色

文章目录 1、引入依赖2、根目录的vue.config.js配置3、在组件文件夹(compontents)中创建svgIcon.vue4、在src目录下创建icons文件5、处理svg格式的图片6、在main.js文件中引入icons文件中的index.js文件7、使用8、效果图1、项目成功运行后的样子2、直接在html上添加样式&#x…

DEBUG系列三:使用 F9 和 watch point

首先是我随便找了个报错。 报销消息号信息&#xff1a; No pricing procedure could be determined Message No. V1212 1&#xff09;首先可以直接SE91 来追溯这个消息号哪儿报出来的 可以看到下面两个地方可能会报这个消息&#xff0c;可以直接在这两个地方打断点&#xff0c;…

开发一个RISC-V上的操作系统(一)—— 环境搭建

在前面我们使用Verilog实现了一个简易的RISC-V处理器&#xff0c;并且能烧录到板子上跑一些简单C程序&#xff0c;传送门&#xff1a; RISC-V处理器的设计与实现&#xff08;一&#xff09;—— 基本指令集_risc_v处理器_Patarw_Li的博客-CSDN博客 RISC-V处理器的设计与实现&…

电子器件系列41:扁平高压电阻

这种电阻和其他的高压电阻不同&#xff0c;不是绕线电阻而是陶瓷电阻 找到一个大神&#xff0c;他的专栏也得很详细了&#xff0c;贴在这里 https://blog.csdn.net/wkezheng/category_12059870.html 阻容感基础03&#xff1a;电阻器分类&#xff08;1&#xff09;-片式电阻器…

如何快速判断是否在容器环境

在渗透测试过程中&#xff0c;我们的起始攻击点可能在一台虚拟机里或是一个Docker环境里&#xff0c;甚至可能是在K8s集群环境的一个pod里&#xff0c;我们应该如何快速判断当前是否在容器环境中运行呢&#xff1f; 当拿到shell权限&#xff0c;看到数字和字母随机生成的主机名…

软考A计划-系统集成项目管理工程师-项目范围管理(二)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

HTML、Markdown、Word、Excel等格式的文档转换为PDF

工具&#xff1a;gotenberg&#xff0c;docker部署 github&#xff1a;https://github.com/gotenberg/gotenberg 文档&#xff1a;https://gotenberg.dev/docs/about https://gotenberg.dev/docs/modules/libreoffice docker运行&#xff1a; docker run -d --rm -p 3000:30…

kubernete部署prometheus监控sring-boot程序

目录 1、kubernete集群环境以及prometheus基础环境 2、kubernetes监控集群内部的spring-boot程序 2.1、application.yml系统配置&#xff0c;endpoints相关设置 2.2、引入监控的相关依赖文件 pom.xml &#xff0c;主要是spring-boot-starter-actuator和micrometer-registr…

ModaHub魔搭社区:向量数据库Milvus产品问题(二)

目录 为什么向量距离计算方式是内积时&#xff0c;搜索出来的 top1 不是目标向量本身&#xff1f; 对集合分区的查询是否会受到集合大小的影响&#xff0c;尤其在集合数据量高达一亿数据量时&#xff1f; 如果只是搜索集合中的部分分区&#xff0c;整个集合的数据会全部加载…

表单(form) post 方式提交时的编码与乱码(上)

在上一篇章中谈论了表单以 get 提交时的编码与乱码问题, 这一章中将讨论以 post 方式提交时的编码与乱码问题. 在前面也同时提到, 表单有一个叫 enctype 的属性, 它有两个值, application/x-www-form-urlencoded 和 multipart/form-data. 这一属性实际只对 post 方式起作用, …