【数据结构-串-数组-广义表】

目录

  • 1 串-理解
    • 1.1 串的抽象定义:-理解
    • 1.2 串的存储结构-不断掌握
      • 1.2.1 顺序存储结构:
      • 1.2.2 链式存储结构:
    • 1.3 串的模式匹配算法:-掌握
      • 1.3.1 BF暴力求解算法-代码 -掌握
      • 1.3.2 KMP求解算法-代码--掌握
  • 2 数组-不断掌握
    • 2.1 顺序存储结构
    • 2.2 特殊矩阵压缩存储
  • 3 广义表

快速的过一遍数据结构中的串、数组、广义表,

1 串-理解

 顾名思义,串也称字符串,不过在数据结构里面处理的串和常规的字符串不一样,这里吧字符串当成一个整体进行处理:例如,在串中查找某个子串,求取一个子串,在串的某个位置上插入一个子串,以及删除一个子串等

1.1 串的抽象定义:-理解

在这里插入图片描述

1.2 串的存储结构-不断掌握

1.2.1 顺序存储结构:

 主要是有:串的定长存储结构、和串的串的堆式顺序存储结构

1.2.2 链式存储结构:

在这里插入图片描述

1.3 串的模式匹配算法:-掌握

1.3.1 BF暴力求解算法-代码 -掌握

  1. BF(Brute Force,暴力搜索)串的模式匹配算法是一种简单直接的字符串匹配算法
#include <stdio.h>
#include <string.h>int bfMatching(char *mainStr, char *patternStr)
{int mainLen = strlen(mainStr);int patternLen = strlen(patternStr);for (int i = 0; i < mainLen - patternLen + 1; i++){if (strncmp(mainStr + i, patternStr, patternLen) == 0){// 找到匹配返回起始位置return i;}}// 未找到匹配返回 -1return -1;
}int main()
{char mainStr[] = "hello world example this is a example";char patternStr[] = "example";int result = bfMatching(mainStr, patternStr);if (result != -1){printf("模式串在主串中首次出现的位置是:%d\n", result);}else{printf("未找到模式串\n");}return 0;
}

结果:
在这里插入图片描述

1.3.2 KMP求解算法-代码–掌握

  1. KMP(Knuth-Morris-Pratt)算法是一种字符串匹配算法,用于在主字符串中查找模式字符串。该算法的时间复杂度为 O(n + m),其中 n 和 m 分别是主串和模式串的长度。下面是一个用 C 语言实现 KMP 算法的示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_SIZE 255typedef struct HString
{char zfc[MAX_SIZE];int length;
} HString;// 获取 next 数组(部分匹配表)
void Get_Next(HString child, int *next)
{int i = 0, j = -1;next[0] = -1;while (i < child.length){if (j == -1 || child.zfc[i] == child.zfc[j]){i++;j++;if (child.zfc[i] != child.zfc[j]){next[i] = j;}else{next[i] = next[j];}}else{j = next[j];}}
}// 模式匹配函数
int bfMatching(char *mainStr, char *patternStr)
{HString parents;HString child;strcpy(parents.zfc, mainStr);parents.length = strlen(mainStr);strcpy(child.zfc, patternStr);child.length = strlen(patternStr);int *next = (int *)malloc(child.length * sizeof(int));Get_Next(child, next);int i = 0, j = 0;while (i < parents.length){if (j == -1 || parents.zfc[i] == child.zfc[j]){i++;j++;}else{j = next[j];}if (j == child.length){free(next);return i - j;}}free(next);return -1;
}int main()
{char mainStr[] = "hello world example this is a example";char patternStr[] = "example";int result = bfMatching(mainStr, patternStr);if (result != -1){printf("模式串在主串中首次出现的位置是:%d\n", result);}else{printf("未找到模式串\n");}return 0;
}

结果:在这里插入图片描述

2 数组-不断掌握

 主要是有数组类型定义,顺序存储结构,下标计算,对于数组而言,其下标之间的关系是一种线性关系,无论是几维数组

2.1 顺序存储结构

在这里插入图片描述

2.2 特殊矩阵压缩存储

 例如一些对称矩阵,我们不用把所有元素都存储,利用对称矩阵的性质,n阶矩阵只用存n(n+1)/2个数,而不用存n^2个数,还有一些其他的特殊矩阵和规则可以利用。

3 广义表

 顾名思义,广义表是线性表的推广,也称为列表。广泛地用千人工智能等领域的表处理语言LISP语言,把广义表作为基本的数据结构,就连程序也表示为一系列的广义表。
广义表的定义是一个递归的定义,因为在描述广义表时又用到了广义表的概念。下面 列举一些广义表的例子
在这里插入图片描述

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

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

相关文章

【总结】mysql 使用shell 脚本远程安装启动不会自动退出结束

问题 使用shell脚本&#xff0c;远程安装部署mysql并启动mysql&#xff0c;当mysql启动命令执行完毕后&#xff0c;远程ssh 命令不会自动结束&#xff0c;安装程序一直卡着不动。 ssh xxx192.168.10.11 “install_mysql.sh” 在 install_mysql.sh 脚本中&#xff0c;启动mysq…

计算机网络3——数据链路层5高速以太网

文章目录 一、100BASE-T 以太网二、吉比特以太网三、10吉比特以太网(10GbE)和更快的以太网四、使用以太网进行宽带接入 随着电子技术的发展&#xff0c;以太网的速率也不断提升。从传统的10Mbits以太网一直发展到现在常用的速率为1Gbits的吉比特以太网&#xff0c;甚至更快的以…

1.求指定宽度的文本的高度,2.ubuntu下ping ipv6,3.git提示:终止提交因为提交说明为空

1.如何求指定宽度的文本的高度 paintEvent(QPaintEvent *event) {QPainter painter(this);QString text "Invalid parameter passed to C runtime function.";QFontMetrics fm(qApp->font());QTextDocument doc(text);doc.setDefaultFont(painter.font());doc.s…

Java中的super

package day33; ​ public class Person {public String name;public int age; ​public Person() {System.out.println("调用了父类的无参构造");} } ​ package day33; ​ public class teacher extends Person{public teacher() {System.out.println("调用了…

为什么iPhone支持整页中文OCR应用很少?有什么好的解决方法?

iPhone上面没有支持中文整页OCR识别的app&#xff0c;这是一个值得探讨的问题。OCR&#xff0c;即光学字符识别&#xff0c;是一种将纸质文档或图片中的文字转化为可编辑文本的技术。随着科技的发展&#xff0c;OCR技术已经广泛应用于各个领域&#xff0c;包括文档处理、图像识…

Python | Leetcode Python题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; class Solution:def isMatch(self, s: str, p: str) -> bool:def allStars(st: str, left: int, right: int) -> bool:return all(st[i] * for i in range(left, right))def charMatch(u: str, v: str) -> bool:return u v or v…

paddlepaddle/paddle 命令注入漏洞复现_$1500 CVE-2024-0934

目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 安装漏洞环境

Linux开机启动流程

Linux开机启动流程详细步骤如下图&#xff1a; 其中&#xff1a; POST:Power On Self Test --加电自检 BIOS: Basic Input Output System --基础输入输出系统 MBR: Master Boot Record --主引导记录 GRUB: GRand Uni…

计算机视觉成新宠儿,三防平板助力医疗保健

计算机视觉是医疗保健行业的一个相当新的趋势&#xff0c;其中图像用于帮助识别和预测患者的诊断&#xff0c;提高准确性&#xff0c;利用计算机图像来做到这一点。图像被拍摄并上传到系统中&#xff0c;然后通过计算机算法进行分析&#xff0c;以优化医疗诊断&#xff0c;例如…

【数据结构(邓俊辉)学习笔记】绪论04——算法分析

文章目录 0. 前言1. 算法分析2.级数2.1基本形式2.2 收敛级数 3.循环 vs 级数4.示例 0. 前言 通过以基本计算模型作为参照&#xff0c;并且以大O记号的形式在上面添加适当刻度&#xff0c;已经建立一套对DSA进行分析的完整工具和体系。不清楚的可以看看复杂度度量 、复杂度分析…

什么是健康管理——健康评估实训室

健康管理—健康评估实训室是一种以健康评估为核心&#xff0c;集教学、实验、实训为一体的多功能教学场所&#xff0c;其主要目的在于通过模拟真实的工作场景和运用先进的健康评估工具&#xff0c;帮助学生掌握健康评估的理论知识和实际操作技能&#xff0c;以便在未来的职业生…

嘴尚绝卤味:传统与现代的完美结合

卤味&#xff0c;作为中国传统美食中的一大类&#xff0c;凭借其独特的口感和丰富的风味&#xff0c;一直深受食客们的喜爱。而在众多卤味品牌中&#xff0c;嘴尚绝卤味凭借其卓越的品质和创新的口味&#xff0c;成为了市场上的佼佼者。今天&#xff0c;就让我们一起来品味嘴尚…

一句话或一张图讲清楚系列之——IDELAYE2的用法

主要参考&#xff1a; Xilinx IDELAYE2应用笔记及仿真实操-CSDN博客 xilinx原语介绍及仿真——IDELAYE2 & IDELAYCTRL_idelayctrl原语使用说明-CSDN博客 1 原理 IDELAYE2一般用于对输入lvds高速信号进行延时微调&#xff0c;可以把时钟和数据都单独微调&#xff1b;如果数…

11-4.Vue2.x基本列表—列表更新—push

文章目录 列表更新数组更新检测 列表更新 数组更新检测 变更方法 Vue 将被侦听的数组的变更方法进行了包裹&#xff0c;所以它们也将会触发视图更新。这些被包裹过的方法包括&#xff1a; push() pop() shift() unshift() splice() sort() reverse()<!DOCTYPE html> &…

pdf加水印怎么加?自己原创的PDF资料分享到网络上需要采取一些版权保护的措施,添加水印就是个不错的选择

一&#xff0c;水印的基本概念 水印通常是一种用于标识文件来源、版权信息或防止非法复制的标记。它可以是文字、图形或图像等形式&#xff0c;以半透明或半淡化的方式嵌入到文件中&#xff0c;既不影响文件的正常阅读&#xff0c;又能起到标识和保护的作用。 二&#xff0c;…

熊猫电竞赏金赛系统源码 APP+H5双端源码附搭建教程下载

熊猫电竞赏金系统简介 熊猫电竞赏金电竞系统 赏金赛源码&#xff0c;用户通过平台打比赛&#xff0c;赢了获得奖金奖励&#xff0c; 金币赛、赏金赛、vip赛等种赛事 可开王者荣耀、和平精英比赛 支持1v1、单排、双排组、战队排等多种比赛模式 支持QQ区、微信区 游戏玩的好…

【前后端】django前后端交互

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、django是什么二、django前后端交互指引三、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发语言&#x…

【前端】node.js常用命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、node是什么二、node.js常用命令三、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人能够上手操作执行一些简单命令&#xff0c;…

stash拯救犹豫不决的commit

当使用git时&#xff0c;发现同事提交了代码&#xff0c;但是我的代码的还没有commit&#xff0c;我想先拉取他们的代码一起测试&#xff0c;测试成功后再commit&#xff0c;最好的做法是什么? 1. 保存当前更改 将当前的未提交更改暂存到Git堆栈&#xff1a;git stash save …

《庆余年》开发衍生短剧,阅文迈向短剧市场的一大步

《庆余年》竟然也要拍短剧了。 据悉&#xff0c;《庆余年》衍生短剧《庆余年之少年风流》预计将于5月1日开机&#xff0c;等了五年都没等到《庆余年2》&#xff0c;没想到先等到了衍生短剧。 由组讯消息可知&#xff0c;《庆余年之少年风流》讲述的是少年庆帝李云潜“扮猪吃老…