数据结构:细讲串的定义和基本操作

简介: 什么是串?羊肉串?牛肉串?当然不是!!!串,即字符串(String)是由零个或者多个字符组成的有序列。可以是字母、数字或者其他字符。
什么是串?羊肉串?牛肉串?当然不是!!!串,即字符串(String)是由零个或者多个字符组成的有序列。
可以是字母、数字或者其他字符。

1.串的定义

可以是字母、数字或者其他字符。

eg:这些都叫做串

S=“HelloWorld!”  //长度n=11
A='frighti ng'    //长度n=10 因为空格也是一种字符

其中串也有它的长度,当串的长度为零的时候叫空串

1.1 常见的术语

  • 字串:串中任意个连续的字符组成的子序列

例如:'h','lo','!' 这些都是串S的字串,这里需要注意的是空串也是串S的字串

  • 主串:就是包含子串的串

例如:'frighting' 就是A的主串

  • 字符在主串出现的位置:字符在串中的序号

例如:‘n’在A中的位置为9,这里是从1开始计数的

  • 子串在主串出现的位置:子串的第一个字符在主串中的位置

例如:‘ng’在A中的位置为9。原因:一般都会以字串中第一个字符为标准,由于‘n’在主串的位置为9,即‘ng’在A中的位置为9。

注意: 空串和空格串不是一个意思:例如M=‘’(其中M是空串),N=‘ ’(N是由一个空格字符组成的,所以是空格串

1.2 串是特殊的线性表

串是一种特殊的线性表,数据元素之间呈线性关系。串的增删改查一般以子串为操作对象

串的数据对象限定为字符集如:

  • 中文字符
  • 英文字符
  • 数字字符
  • 标点字符等

2.1 串的基本操作

设有串T=“”, S=“He llo!”, W="llo"

  • StrAssign(&T,chars):赋值操作。把串T赋值为chars
  • StrCopy(&T,S):复制操作。由串S复制得到串T
  • StrEmpty(S):判空操作,若S为空串,则返回true,反之为false
  • StrLength(&S):求串长,返回串S的元素的个数
  • ClearString(&S):清空操作。将串S清为空串
  • DestoryString(&S):销毁操作。将串S销毁,并回收存储空间
  • Concat(&T,S1,S2):串联接。用T返回由S1 和 S2联接而成的新串
例如:执行操作Concat(&T,S,W)后得到: T=“He llo!llo”
  • SubString(&Sub,S,pos,len):求子串,用Sub返回串S的第pos个字符起长度为len的子串
例如:执行操作SubString(&T,S,2,4)后,T=“e ll”
  • Index(S,T):定位操作。若主串S中存在子串T值相同的字串,则返回它在主串S中第一次出现的位置,否则函数值为0
例如:执行操作Index(S,W)后,返回值为4
  • StrCompare(S,T):比较操作。若S>T,则返回值>0;若S<T,则返回值<0;若S=T,返回值=0。

2.2 字符集编码

任何数据存储到计算机中一定是二进制。需要确定一个字符和二进制的对应规则,这就是编码,如utf-8

目录
相关文章
|
5月前
|
存储 C语言
数据结构中的线性表链式存储介绍及其基本操作
链式存储是线性表的一种重要存储方式,它通过节点和指针的结构,实现了灵活的动态存储管理。本文介绍了单向链表的基本操作,并提供了相应的C语言代码示例。理解和掌握链表的操作对学习和应用数据结构具有重要意义。希望这篇博客能帮助你更好地理解线性表的链式存储。
131 2
|
2月前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
555 6
|
2月前
MITK中的数据结构和常量定义
本文介绍了MITK中的数据结构、反射机制、常量定义、DataNode类和类宏定义,包括多图映射、反射接口、事件宏和属性列表等高级特性。
|
5月前
|
存储
数据结构学习记录——堆的插入(堆的结构类型定义、最大堆的创建、堆的插入:堆的插入的三种情况、哨兵元素)
数据结构学习记录——堆的插入(堆的结构类型定义、最大堆的创建、堆的插入:堆的插入的三种情况、哨兵元素)
37 2
|
5月前
|
机器学习/深度学习 存储
数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)
数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)
136 1
|
5月前
|
存储 机器学习/深度学习
数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)
数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)
64 0
|
5月前
|
算法
数据结构和算法学习记录——平衡二叉树(基本介绍、平衡因子、平衡二叉树的定义、平衡二叉树的高度)
数据结构和算法学习记录——平衡二叉树(基本介绍、平衡因子、平衡二叉树的定义、平衡二叉树的高度)
57 0
|
5月前
|
算法
数据结构和算法学习记录——初识二叉树(定义、五种基本形态、几种特殊的二叉树、二叉树的重要性质、初识基本操作函数)
数据结构和算法学习记录——初识二叉树(定义、五种基本形态、几种特殊的二叉树、二叉树的重要性质、初识基本操作函数)
56 0
|
5月前
|
机器学习/深度学习 存储 算法
数据结构和算法学习记录——树(基本介绍、树的定义、树的特点、树的一些基本术语、树的表示、儿子-兄弟表示法)
数据结构和算法学习记录——树(基本介绍、树的定义、树的特点、树的一些基本术语、树的表示、儿子-兄弟表示法)
95 0
|
5月前
|
存储 算法
数据结构和算法学习记录——特殊线性表之队列-队列的概念、队列结构体类型定义 、基本接口函数、初始化函数、销毁队列函数、入队列函数、判断队列是否为空、出队列函数、读取队头队尾的数据 、计算队列数据个数
数据结构和算法学习记录——特殊线性表之队列-队列的概念、队列结构体类型定义 、基本接口函数、初始化函数、销毁队列函数、入队列函数、判断队列是否为空、出队列函数、读取队头队尾的数据 、计算队列数据个数
42 0