软件设计师笔记-数据结构

数据结构

数据元素的集合及元素间的相互关系和构造方法。

线性表的存储结构

  • 顺序存储
  • 链式存储

单链表节点

typedef struct node { 
	int data; 
	struct node *link; 
}NODE, *LinkList; 

双向链表

每个节点有两个指针,分别指出直接前驱和直接后继。

循环链表

尾节点指针指向第一个节点。

静态链表

借助数组来描述线性表的链式存储结构。

  • 特点:后进先出
  • 初始化栈: InitStack(S)
  • 判栈空:StackEmpty(S)
  • 入栈:Push(S,x)
  • 出栈:Pop(S)
  • 读取栈顶元素:Top(S)-----顺序存储+链式存储

队列

  • 特点:先进先出,尾入头出
  • 初始化队列:InitQueue(Q)
  • 判队空:Empty(Q)
  • 入队:EnQueue(Q,x)
  • 出队:DeQueue(Q)
  • 读队头元素:FrontQue(Q)-----顺序存储+链式存储

仅由字符构成的有限序列,是取值范围受限的线性表。

数组

定长线性表在维数上的扩张,一般不做插入删除运算。

矩阵

  • 特殊矩阵:元素分布有一定的规律(对称矩阵、三角矩阵、对角矩阵)
  • 稀疏矩阵:非零元素远少于零元素且分布无规律,用三元组存储(行号,列号,值)

广义表

  • 表中有表
  • 表头:表中第一个元素
  • 表尾:表中除去表头剩下的部分

  • 递归的,元素之间有明显的层次关系。
  • 完全二叉树应采用顺序存储结构,一般二叉树则应采用链式存储结构
  • 二 叉 树 的 链 式 存 储 结 构:
    typedef struct BiTnode {
    	 int data; 
    	 struct BiTnode *lchild, *rchild; 
     }BiTnode, *BiTree; 
    

二叉树的遍历

  • 先序遍历(先访问根节点)
  • 中序遍历(第二访问根节点)
  • 后序遍历(最后访问根节点)
  • 层序遍历(利用队列、每次出同一层的节点时进他们的子节点层)

线索二叉树

加上线索(直接前驱和直接后继)的二叉树。

最优二叉树(哈夫曼树)

一类带权路径长度最短的树。

树的存储结构

  • 双亲表示法:顺序存储
  • 孩子表示:链式存储
  • 孩子兄弟表示:链式存储,两个指针分别为第一个孩子和下一个兄弟

一个节点的前驱节点和后继节点数目没有任何限制。

图的表示

  • G=(V,E);
  • V:顶点的集合;

边带权值的图。

图的相关概念

在这里插入图片描述

图的存储结构

  • 邻接矩阵表示法
  • 邻接链表表示法

图的遍历

  • 深度优先搜索
  • 广度优先搜索

生成树

极小连通子图,针对连通图。

最小生成树(权值和最小的生成树)算法

  • 普尼姆算法:在相邻边的基础上求最小,与边数无关,适于边稠密的网。
  • 克鲁斯科尔算法:在不构成环的基础上找最小边直至连通,与顶点数无关,适于边稀疏的网。

AOV 网

有向图中顶点表示活动,有向边表示活动间的优先关系。

拓扑排序

将 AOV 网中所有顶点按优先顺序排成一个线性序列的过程。

AOE 网

有向图中有向边表示活动,边上的权值表示该活动持续的时间。

关键路径

从源点到汇点的路径中长度最长的。

最短路径

从源点到其余各顶点的最短路径-----迪杰斯克拉算法。

平均查找长度

关键字和给定值进行过比较的记录个数的平均值。

静态查找方法

  • 顺序查找
  • 折半查找
  • 分块查找

动态查找

表结构本身在查找过程中是动态生成的。

二叉排序树

左子树上所有节点的值小于根节点的值,右子树上所有节点的值大于根节
点的值。

平衡二叉树(AVL 树)

左子树和右子树高度之差的绝对值不超过1 。

B_树(m 阶)

每个节点子树个数<=m,根节点子树个数=0 或>=2,其他节点子树个数=0
或>=m/2。

哈希表

  • 通过哈希函数(以记录的关键字为自变量)得到记录的存储地址
  • 定长按一定函数规律存放数据
  • 哈希地址+关键字

哈希表的重点

  • 构造哈希函数:直接定址法,数字分析法,平方取中法,折叠法,随机
    数法,除留余数法
    解决冲突:开放定址法,链地址法,再哈希法

简单排序

  • 时间复杂度 O( n 2 n^2 n2),空间复杂度 O( 1 1 1))
  • 直接插入排序:插入第 i 个时,前 i-1 个已经排序好
  • 冒泡排序:相邻两个比较排序,每次循环确定一个极值
  • 简单选择排序:第 i个依次与后面每个元素比较排序,每次循环确定一个极值,不稳定

高端内部排序

  • 希尔排序:先将整个序列分割成若干序列分别进行直接插入排序,再对整个序列进行一次直接插入排序,不稳定
  • 快速排序:将整个记录分割成独立的两部分,两个指针分别指向对应部分的两端,往中间移动比较排序,递归,不稳定
  • 堆排序:建立初始堆输出并删除堆顶关键字,再建立新堆得到新的关键字依次输出,不稳定
  • 归并排序:将若干个有序序列合并为新的有序序列
  • 基数排序:按组成关键字的各个数位的值进行排序

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【javascript】console 对象提供的方法

文章目录 1、 console.dir() 打印对象2、console.table() 打印数组3、 console.clear() 清理控制台4、console.group() 控制打印组5、console.time() 完成计时 console.log 是一个很好的调试方式。但是 如果我们滥用它&#xff0c;效果反而会适得其反&#xff01;大量打印信息堆…

一:时序数据库-Influx应用

目录 0、版本号 1、登录页面 2、账号基本信息 3、数据库案例 4、可视化 5、java案例 0、版本号 InfluxDB v2.4.0 1、登录页面 http://127.0.0.1:8086/signin 账号&#xff1a;自己账号 密码&#xff1a;自己密码 2、账号基本信息 查看用户id和组织id&#xff01;&…

构建一个导航栏web

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}#menu{background-color:purple;width: 100px;height: 50px;}.item{float: left;/* 浮动标签可以让块标签&#xff0c…

JAVA基础:单元测试;注解;枚举;网络编程 (学习笔记)

单元测试 操作步骤&#xff1a; a.导包import org.junit; b.三个注解 Test Before After c.点击Test 运行就可以了 用在不需要控制台输入的情境下&#xff1a;javaweb&#xff0c;框架项目&#xff0c;微服务项目 供开发人员自己做测试。 package com.page…

Node.js-增强 API 安全性和性能优化

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;node.js篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js-增强 API 安全性和性能优化 前言 在前几篇文章中&#xff0c;我们已经构建了一个…

ThingsBoard规则链节点:Push to Edge节点详解

引言 1. Push to Edge 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 边缘计算 3.2 本地数据处理 3.3 实时响应 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台&#xff0c;提供了设备管…

第二届计算机网络技术与电子信息工程国际学术会议(CNTEIE 2024,12月6-8日)

第二届计算机网络技术与电子信息工程国际学术会议&#xff08;CNTEIE 2024&#xff09; 2024 2nd International Conference on Computer Network Technology and Electronic and Information Engineering 官方信息 会议官网&#xff1a;www.cnteie.org 2024 2nd Internation…

A013-基于SpringBoot的宽带业务管理系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…

「C/C++」C/C++标准库 之 #include<cstddef> 常用定义和宏

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

Vue3-子传父

1. 主组件 App.vue&#xff08;父组件&#xff09; 在 App.vue 中&#xff0c;我们先引入了子组件 SonCom&#xff0c;这个小家伙将在父组件中出场。 接着&#xff0c;我们写了一个叫 getMessage 的函数。这个函数的任务很简单——接收子组件传来的消息&#xff0c;然后用 con…

网络--传输层协议--TCP

1、TCP协议的特性 面向连接(需要建立连接,才能继续通信) 面向字节流的一对一通信模式 通过流量控制和拥塞控制 -> 确保可靠传输 报头大小20字节(若带选项,最大60字节) 2、TCP报文字段 16位源端口号 和 16位目的端口号 -- 2 + 2 = 4 字节 32位序号 和 32位确认序…

【Python】计算机视觉应用:OpenCV库图像处理入门

计算机视觉应用&#xff1a;OpenCV库图像处理入门 在当今的数字化时代&#xff0c;计算机视觉&#xff08;Computer Vision&#xff09;已经渗透到各行各业&#xff0c;比如自动驾驶、智能监控、医疗影像分析等。而 Python 的 OpenCV 库&#xff08;Open Source Computer Visi…

【Ai测评】GPT Search偷偷上线,向Google和微软发起挑战!

最近&#xff0c;OpenAI 又推出了一个令人兴奋的新功能——GPT Search&#xff0c;已经正式上线了&#xff01; 功能介绍 GPT Search&#xff1a;为你带来全新搜索体验 目前&#xff0c;桌面端和移动端应用程序已经全面上线&#xff0c;所有 GPT Plus 和 Team 用户都可以立即…

iOS用rime且导入自制输入方案

iPhone 16 的 cantonese 只能打传统汉字&#xff0c;没有繁简转换&#xff0c;m d sh d。考虑用「仓」输入法 [1] 使用 Rime 打字&#xff0c;且希望导入自制方案 [2]。 仓输入法有几种导入方案的方法&#xff0c;见 [3]&#xff0c;此处记录 wifi 上传法。准备工作&#xff1…

【数据结构】算法的时间复杂度和空间复杂度

写在前面 在我们学习数据结构之前&#xff0c;我们肯定就听过某某大神说&#xff0c;我的排序算法的时间复杂度只需要O(logN)&#xff0c;空间复杂度只需要O(1)…听的好唬人&#xff0c;但是实际也真牛。那其中时间复杂度和空间复杂度是什么呢&#xff1f;不才这篇笔记就深入讲…

基于MATLAB的农业病虫害识别研究

matlab有处理语音信号的函数wavread&#xff0c;不过已经过时了&#xff0c;现在处理语音信号的函数名称是audioread选取4.wav进行处理&#xff08;只有4的通道数为1&#xff09; 利用hamming窗设计滤波器 Ham.m function [N,h,H,w] Ham(fp,fs,fc)wp 2*pi*fp/fc;ws 2*pi*…

MongoDB基础介绍以及从0~1语法介绍

目录 MongoDB 教程导读 NoSQL 简介 关系型数据库遵循ACID规则 分布式系统 分布式计算的优点 分布式计算的缺点 什么是NoSQL? 为什么使用NoSQL ? RDBMS vs NoSQL NoSQL 简史 CAP定理&#xff08;CAP theorem&#xff09; NoSQL的优点/缺点 BASE ACID vs BASE N…

Oracle简介、环境搭建和基础DML语句

第一章 ORACLE 简介 1.1 什么是 ORACLE ORACLE数据库系统是美国ORACLE 公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器体系结构的数据库之一。 英文官网&#xff1a;Database | Oracle 中文官网&#xff…

前端好用的网站分享——CSS(持续更新中)

1.CSS Scan 点击进入CSS Scan CSS盒子阴影大全 2.渐变背景 点击进入color.oulu 3.CSS简化压缩 点击进入toptal 4.CSS可视化 点击进入CSS可视化 这个强推&#xff0c;话不多说&#xff0c;看图! 5.Marko 点击进入Marko 有很多按钮样式 6.getwaves 点击进入getwaves 生…

黑马官网2024最新前端就业课V8.5笔记---HTML篇

Html 定义 HTML 超文本标记语言——HyperText Markup Language。 标签语法 标签成对出现&#xff0c;中间包裹内容<>里面放英文字母&#xff08;标签名&#xff09;结束标签比开始标签多 /拓展 &#xff1a; 双标签&#xff1a;成对出现的标签 单标签&#xff1a;只有开…