串和数组.

article/2025/8/27 15:14:31

目录

基本知识

串的模式匹配算法

BF算法

KMP算法

数组

基本知识

二维数组 

矩阵

对称矩阵

三角矩阵

对角矩阵

基本知识

1.串是一种特殊的线性表,其特殊性体现在是一个字符(重点)。
        串值也可以用链表来存储,由于串的元素数据是一个字符,只有8位二进制数,因此用链表存储时通常一个结点中存放的不是一个字符,而是一个子串

2.当串的长度为0时,该串称为“空串”
        注意:当串一个或多个空格组成时,则称为“空格串”,其长度为空格的数量。

3.由串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应的称为主串。
       
①空串是任意串的子串;
        ②任意串是其本身的子串;
        ③一个串中有n个元素,则有2^n-1种子串,有2^n-2种真子串。

例:a="BEI" ,b="JING" ,c="BEIJING" ,d="BEI JING" 四个串
子串:a和b都是c和d的子串
串长:【 3,4,7,8 】   a、b和c的串长为字符数量,d串中的空格同样作为元素计算长度
两串相等的判断:要求两个串对应位置的字符相等且串长相等。c和d不相等
两串比较:从第一个字符开始按照ASCII表进行对比,按ASCII值比较大小。

串的模式匹配算法

子串的定位运算通常称为串的模式匹配串匹配

BF算法

BF算法设计思想:
        将主串的第pos个字符和模式串的第一个字符比较;
        若相等则逐个匹配后续字符,若不等则主串进入第pos+1个字符,模式串返回第一个字符重新比较;
        直到主串中一个连续的子串与模式串完全相等,并返回两串匹配的第一个字符在主串中的序号;
        若直到主串比较完毕依然没有符合的子串则匹配失败。

int Index_BF(SString &S,SString &T,int pos) 
{int i,j;i=pos;j=1;while(i<=S.length && j<=T.length){if(S.ch[i]==T.ch[j]){++i;++j;}else{i=i-j+2;j=1;}}if(j>T.length)return i-T.length;elsereturn 0;
}

KMP算法

KMP算法是在BF算法的思想上升级改造,最大的突破就是极大的减少了算法的时间复杂度
KMP算法设计思想:
        将主串的第pos个字符和模式串的第一个字符比较;
        若相等则逐个匹配后续字符,若不等则主串指针不回溯,模式串返回第一个字符重新比较;
        直到主串中一个连续的子串与模式串完全相等,并返回两串匹配的第一个字符在主串中的序号;
        若直到主串比较完毕依然没有符合的子串则匹配失败。

int Index_KMP(SString &S,SString &T,int pos) 
{int i,j;i=pos;j=1;while(i<=S.length && j<=T.length){if(j==0 || S.ch[i]==T.ch[j]){++i;++j;}else{j=1;}}if(j>T.length)return i-T.length;elsereturn 0;
}

数组

基本知识

由类型相同的数据元素构成的有序集合,每个元素称为数组元素,每个元素受n个线性关系的约束,每个元素在n个线性关系中的序号i1,i2,i3…,in称为该元素的下标,可以通过下标访问该数据元素。(因为数组中每个元素处于n个关系中,故称该数组为n维数组)
由于对数组一般不进行插入或删除操作,所以使用顺序存储结构表示数组比较合适。
数组的顺序表示和实现用一组连续的存储单元存放数组的数据元素。

二维数组 

在C语言中,一个二维数组类型可以定义为其分量类型为一维数组类型的一维数组。
即            typedef        ElemType        Array2[m][n];
等价于      
                typedef        ElemType        Array1[n];
                typedef        Array1             Array2[m];

二维数组的定义:

 二维数组是数据元素为线性表的线性表。

数组的顺序表示和实现—二维

常用的映射方法有两种: 
        按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。  
        按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。
重点:(二维数组a[m][n],每个元素占b个长度,首地址a[0][0]为c,则第a[i][j]个元素的地址为length)
计算:
1. 按行优先       length=c+i*n*b+j*m*b
2. 按列优先       length=c+i*m*b+j*n*b

矩阵

矩阵用二维数组表示是很好的方法,若值相同的元素或者零元素在矩阵中的分布有一定规律,则称此类矩阵为特殊矩阵。特殊矩阵主要包括对称矩阵、三角矩阵和对角矩阵。

对称矩阵

若n阶矩阵A中的元满足条件:aij=aji(1<=i,j<=n) 则称为n阶对称矩阵。
假设以一维数组sa[n(n+1)/2]作为n阶对称矩阵A的存储结构,则sa[k]和矩阵元aij之间存在一一对应的关系:

对于任意给定的一组下标(i,j),均可在 sa 中找到矩阵元 aij;反之,对所有的k =0,1,2,…,(n +1)*n/2-1,都能确定 sa[k]中的元在矩阵中的位置(i,j)。由此,称sa[n*(n1)/2]为n阶对称矩阵 A 的压缩存储。

三角矩阵

以对角线划分,三角矩阵分为上三角矩阵和下三角矩阵。
上三角矩阵是指矩阵下三角中的元均为常数的n阶矩阵,下三角矩阵与之相反。

                         下三角矩阵                                        上三角矩阵

sa[k]和矩阵元aij之间的关系:(一般研究有元素的位置信息)
(1)下三角矩阵
当矩阵中的第一个元素a11在存储空间中的位置k=0时,元素aij的存储空间
                        k = (i-1)*i/2+j-1
(2)上三角矩阵
当矩阵中的第一个元素a11在存储空间中的位置k=0时,元素aij的存储空间
                        k = (i-1)(2*n-i+2)/2+(j-i)     //n为矩阵阶数

对角矩阵

对角矩阵所有的非零元都集中在以对角线为中心的带状区域中,即除了对角线上和直接在对角线上、下方若干条与对角线平行的线上的元之外,所有其他的元皆为零 。对这种矩阵,也可按某个原则(或以行为主,或以线的顺序)将其压缩存储到一维数组上。

如图非零元素均在对角线上,但零也可以在主对角线上

对角矩阵也是对称矩阵

以上这些特殊矩阵中,非零元的分布都有明显的规律,从而可以将其压缩存储到一维数组中,并找到每个非零元在一维数组中的对应关系


http://chatgpt.dhexx.cn/article/DPBbwvHC.shtml

相关文章

串及其应用

一、实验目的&#xff1a; &#xff08;1&#xff09;掌握串的顺序存储结构及定长字符串的基本操作。 &#xff08;2&#xff09;掌握串的BF和KMP模式匹配算法 二、实验原理 串是一种特殊的线性表&#xff0c;其特性体现在数据元素的一个字符&#xff0c;即串是一种内容受限的…

数据结构——串

目录 1.串的定义与基本操作 1.1定义 1.2基本操作 2.串的存储结构 2.1顺序存储 2.2链式存储 3.字符串的模式匹配算法&#xff08;“查找”章节&#xff09; 3.1朴素模式匹配算法 3.2KMP算法 3.2.1算法思想 3.2.2算法代码实现 3.2.3求next数组和nextval数组&#xff…

数据结构之串

1、串的概念 字符串简称串&#xff0c;是一种特殊的线性表&#xff0c;它的数据元素仅由一个字符组成。 2、串的定义 串(String)是由零个或多个字符组成的有限序列&#xff0c;又称字符串。 其中s是串名,用双引号括起来的字符序列为串值&#xff0c;但引号本身并不属于串的内容…

串的详细讲解

1 串的基本概念 1.1 串的定义 串&#xff1a;( string)(或字符串)是由零个或多个字符组成的有限序列&#xff0c;一般记为s...&#xff0c;其中&#xff0c;s是串的名&#xff0c;用单引号括起来的字符序列是串的值&#xff1b;(1<i≤n)可以是字母、数字或其他字符&#xff…

串(数据结构)

一、 串类型的定义 串的定义 串&#xff08;string&#xff09;&#xff08;或字符串&#xff09;是由零个或多个字符组成的有序序列&#xff0c;一般记为 S”a1a2…an” (n>0) 其中&#xff0c;s是串的名&#xff0c;用双引号括起来的字符序列是串的值&#xff1b;ai (…

数据结构:串(String)【详解】

友情链接&#xff1a;数据结构专栏 目录 串【知识框架】一、串的定义二、串的存储结构1、定长顺序存储表示2、堆分配存储表示3、块链存储表示 三、串的基本操作四、串的模式匹配&#xff08;重点&#xff09;1、简单的模式匹配算法2、KMP算法&#xff08;1&#xff09;字符串的…

idm下载器是免费的吗?有哪些功能

对于PC用户来说&#xff0c;拥有一款好用和快速的下载工具&#xff0c;对我们来说至关重要&#xff0c;可以极大提高我们的工作效率和PC用户体验。IDM可以实现高速下载&#xff0c;其核心原理就是多线程下载&#xff0c;理论上可以达到带宽的峰值速度&#xff0c;深受用户的喜爱…

IDM下载器|Windows系统经典下载工具idm6.41|IDM如何在线视频下载工具 |下载视频教程

IDM全称Internet Download Manager,是一种将下载速度提高最多5倍的专业下载工具,支持大部分文件格式下载和基本所有的下载链接,无视网址本身下载限速,直接达到电脑该有的网速。 下载更快更可靠 下载INTERNET DOWNLOAD MANAGER(IDM下载器)开始您的极速下载旅程&#xff0c;永远…

【IDM】IDM下载器安装

下载链接 IDM_v6.41.2_Reрack.exe提取码: gj46 可能遇到的问题 1. 某些应用程序阻止了IDM集成到浏览器中 解决方法&#xff1a; 1.打开“Windows Update” 2.winr运行cmd 3.输入“services.msc” 4.找到“Windows Update”运行 5.关闭IDM&#xff0c;用管理员身份运行。…

【百度网盘下载】用工具IDM下载器

个人的一些学习资料和共享资料都是在百度网盘上&#xff0c;但是最近百度网盘的下载速度实在是太慢了。目前找到的比较好的方法是用IDM下载器。 微信公众号&#xff1a;北鼻不抠鼻 它详细介绍了这个软件的下载方式&#xff0c;还有相关配置。 重点是 绿色 嘿嘿 下载完在浏览器…

怎么在火狐浏览器中添加IDM下载器扩展?

Internet Download Manager&#xff08;简称“IDM”&#xff09;是一种将下载速度提高5倍&#xff0c;可以恢复和安排下载任务的工具。当在下载的过程中遇到连接丢失、网络问题、计算机关机或意外停电等问题&#xff0c;IDM可以全面恢复和重启中断的下载。 Internet Download M…

internet download manager(IDM下载器) 6.40

软件下载 internet download manager(IDM下载器)是一款很不错的下载工具。有了internet download manager软件&#xff0c;可以提高你下载文件的速度&#xff0c;如果您在下载文件的时候&#xff0c;突然没网了&#xff0c;您可以使用IMD下载器的续传功能非常的方便&#xff0…

idm下载器是什么软件?最新V6.41版本号Win下载工具

Internet Download Manager &#xff08;IDM&#xff09;是一种将下载速度提高多达 5 倍&#xff0c;恢复和安排下载的软件。全面的错误恢复和恢复功能将由于连接丢失&#xff0c;网络问题&#xff0c;计算机关闭或意外断电而重新启动中断的下载或中断下载。IDM下载器是一款先进…

IDM下载器插件 让浏览器不在限速

IDM下载器 可提速&#xff08;2到n倍&#xff09;的使用方法&#xff0c;让浏览器不在限速 前言 IDM 最佳的 Windows 下载工具 官方网址: http://www.internetdownloadmanager.com/. 尽管现在要用到「下载工具」的时间相比过去有所减少&#xff0c;但电脑上总要备一款以防不…

IDM下载器免费高质量的Win下载工具无使用限制

这是Windows 平台上的一款下载软件&#xff0c;它支持不同类型的浏览器&#xff0c;几乎能下载网页中所有的数据&#xff0c;还不会弹出广告。internetdownloadmanager(IDM下载器)是一款很不错的下载工具&#xff0c;很多人使用&#xff0c;这个软件好处就是免费 网上可以搜索到…

idm下载器怎么下载网页视频?如何用idm自动下载网站文件?

随着互联网的快速发展&#xff0c;越来越多的资源都可以免费下载&#xff0c;而idm下载器凭借其独特的“多线程资源嗅探”&#xff0c;能轻松下载各种网页视频&#xff0c;因此idm也一直被称为下载神器&#xff0c;那idm下载器怎么下载网页视频&#xff0c;或者自动下载网站文件…

chrome中下载文档时设置成不使用idm下载器的方法

wyn enterprise中用到导出功能时&#xff0c;自动调用idm但往往下载报错。 如何关闭idm自动弹出并下载功能呢&#xff1f; 1、设置。 2、选项。

电脑版idm下载器好不好用?

IDM&#xff08;Internet Download Manager&#xff09;是Windows上一款非常好用的下载管理器。在功能方面&#xff0c;它是主流下载器中的佼佼者&#xff0c; 更获得多种奖项&#xff0c; 是。下面&#xff0c;我列出了自己在使用Internet Download Manager的一些实用技巧和窍…

idm下载器简介

Internet Download Manager是Windows、Mac用户比较喜欢的一款老牌下载器&#xff0c;它提供了许多贴心功能&#xff0c;用过的朋友应该深有体会。如果你没有用过IDM下载器&#xff0c;可以看看文章整理相关功能介绍&#xff0c;别错过哟。 1.自动捕获链接 在浏览器中下载文件时…

IDM下载器下载百度网盘文件

郑重声明&#xff1a;本文章只作为个人学习研究中解决百度网盘下载速度慢的解决方法&#xff0c;不作为任何商业用途&#xff0c;所有工具均合法来自于互联网&#xff0c;本人支持正版&#xff0c;拒绝盗版。请读者严格遵守相关规定&#xff0c;本人不对他人通过本文章知识了解…