软件设计师_数据结构与算法_学习笔记

文章目录

  • 6.1 数组与矩阵
    • 6.1.1 数组
    • 6.1.2 稀疏矩阵
  • 6.2 线性表
    • 6.2.1 数据结构的定义
    • 6.2.2 顺序表与链表
      • 6.2.2.1 定义
      • 6.2.2.2 链表的操作
    • 6.2.3 顺序存储和链式存储的对比
    • 6.2.4 队列、循环队列、栈
      • 6.2.4.2 循环队列队空与队满条件
      • 6.2.4.3 出入后不可能出现的序列练习
    • 6.2.5 串
  • 6.3 广义表
  • 6.4 树与二叉树
    • 6.4.1 基本概念
    • 6.4.2 满二叉树与完全二叉树
    • 6.4.3 二叉树的重要性质
    • 6.4.4 二叉树的遍历
    • 6.4.5 方向构造二叉树
    • 6.4.6 树转二叉树
    • 6.4.7 查找二叉树(排序二叉树)
    • 6.4.8 最优二叉树(哈夫曼树)
    • 6.4.9 线索二叉树
    • 6.4.10 平衡二叉树
  • 6.5 图
  • 6.6 排序与查找
  • 6.7 算法基础及常见的算法

6.1 数组与矩阵

6.1.1 数组

求存储地址

  • 一维数组直接算
  • 二维数组看清是按行还是按列存储

在这里插入图片描述

6.1.2 稀疏矩阵

在这里插入图片描述

求对应一维数组下标公式,可以直接代两个元素进行验算

在这里插入图片描述

6.2 线性表

6.2.1 数据结构的定义

线性结构

  • 线性表

非线性结构

  • 图(可能存在环路)

在这里插入图片描述

6.2.2 顺序表与链表

6.2.2.1 定义

顺序表:采用一维数组的方式来存信息
链表:每个存储单元包含数据和指针

  • 单链表:只有一套指针,头结点指向第一个元素,并依次指下去。
  • 循环链表:与单链表的区别就是尾部有个指针直接指向头部。
  • 双向链表:可以双向移动,一套指针从头指到尾部,一套由尾指到头部。

6.2.2.2 链表的操作

  • 单链表删除结点:p->next = q->next
  • 单链表插入结点:s->next = p->next;p->next = s->next

引入头结点的好处可以让所有的结点操作方式一致

在这里插入图片描述

6.2.3 顺序存储和链式存储的对比

在这里插入图片描述

6.2.4 队列、循环队列、栈

队列:先进先出(又称先进先出表)
栈:先进后出

在这里插入图片描述

6.2.4.2 循环队列队空与队满条件

在这里插入图片描述

6.2.4.3 出入后不可能出现的序列练习

在这里插入图片描述

6.2.5 串

串是仅由字符构成的有限序列,是线性表的一种。

6.3 广义表

  • 广义表是线性表的推广
  • 广义表的元素即可以是单个元素(原子),也可以是广义表(子表)
  • 操作:
    *取表头head(LS)
    *取表尾tail(LS)

在这里插入图片描述

6.4 树与二叉树

6.4.1 基本概念

  • 根:树最顶层的结点。即下图的结点1。
  • 父结点(双亲结点):元素的上一层。下图中结点1为结点2、3的父结点。
  • 子结点:与父结点相反。
  • 兄弟结点:与该结点同层。下图结点4是结点5的兄弟结点。6为堂兄弟结点。
  • 结点的度:一个结点的子树的个数。下图结点2的度为2,结点7的度为0。
  • 树的度:该树中结点的度最高的结点的度的个数。MAX。下图树的度为2。
  • 叶子结点(终端结点):度为0的结点。下图结点4、5、7、8。
  • 内部结点(分支结点或非终端结点):除根结点和叶子结点外。下图结点2、3、6。
  • 结点的层次:根结点为第一层,依次往下。
  • 树的高度(深度):一棵树最大的层数。下图树的高度为4。

在这里插入图片描述

6.4.2 满二叉树与完全二叉树

  • 满二叉树:深度为k的二叉树节点个数为2k -1,即所有的结点都是满的。

可以对满二叉树进行连续编号,约定编号从根结点自上而下,自左至右依次进行。

  • 完全二叉树:除最底层外其余为满二叉树,最底层从左至右依次排列。

在这里插入图片描述

6.4.3 二叉树的重要性质

在这里插入图片描述

6.4.4 二叉树的遍历

三种遍历方式的区别就是根遍历的先后问题。

  • 先序遍历:根左右
  • 中序遍历:左根右
  • 后序遍历:左右根
  • 层次遍历:按顺序遍历

在这里插入图片描述

6.4.5 方向构造二叉树

给出二叉树的遍历序列,反向推出二叉树的结构
在这里插入图片描述

在这里插入图片描述

6.4.6 树转二叉树

  1. 将兄弟结点相连。
  2. 只保留第一个孩子结点与父结点的连线,其余全部断开,在旋转图可得

在这里插入图片描述

6.4.7 查找二叉树(排序二叉树)

对于每个结点,其左孩子结点小于根,右孩子结点大于根,称为查找二叉树。

在这里插入图片描述

6.4.8 最优二叉树(哈夫曼树)

哈夫曼树是其叶子结点带权路径长度最短的二叉树

  • 带权路径长度:即路径长度乘权值,下图第一个二叉树的结点8的带权路径长度为8*3=24。
  • 树的带权路径长度为其总和。

在这里插入图片描述

6.4.9 线索二叉树

在所有的叶子结点上标出其前驱和后继。需先求出其序列,才能写出对应的线索二叉树。

在这里插入图片描述

6.4.10 平衡二叉树

每个结点的平衡度只能为1、0、-1
平衡度为该结点的左子树深度减右子树深度的值

在这里插入图片描述

6.5 图

6.6 排序与查找

6.7 算法基础及常见的算法

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

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

相关文章

【Spring笔记02】Spring中的IOC容器和DI依赖注入介绍

这篇文章,主要介绍一下Spring中的IOC容器和DI依赖注入两个概念。 目录 一、IOC控制反转 1.1、什么是IOC 1.2、两种IOC容器 (1)基于BeanFactory的IOC容器 (2)基于ApplicationContext的IOC容器 二、DI依赖注入 2.…

【Python】读取显示pgm图像文件

文章目录 零. 前言一. pgm基本概念二. pgm基本信息读取三. pgm图像渲染四. 代码优化 零. 前言 这学期要学多媒体信息隐藏对抗,发现其中的图像数据集文件都是pgm文件形式的。虽然是图像文件,但是却不能直接通过图像查看器来打开,上网一搜&…

大模型 Decoder 的生成策略

本文将介绍以下内容: IntroductionGreedy Searchbeam searchSamplingTop-K SamplingTop-p (nucleus) sampling总结 一、Introduction 1、简介 近年来,由于在数百万个网页数据上训练的大型基于 Transformer 的语言模型的兴起,开放式语言生…

怎么利用互联网赚钱,网上赚钱的7种方法

互联网的兴起改变了我们的生活方式,不仅让我们的世界更为便捷,也为我们提供了赚钱的机会。越来越多的人开始通过互联网实现财富梦想。你是否曾想过,如何利用互联网来赚钱呢?今天,我将为大家分享七种赚钱方法&#xff0…

Leetcode hot 100之双指针(快慢指针、滑动窗口)

目录 数组 有序的平方仍有序 删除/覆盖元素 移动零:交换slow和fast 滑动窗口:最短的连续子串(r可行解->l--最短解) 最小长度的子数组 求和:sort、l i 1, r len - 1 三数之和abctarget 四数之和abcdtarg…

汽车类、TPS7B8225QDGNRQ1、TPS7B8233EPWPRQ1、TPS7B8601QKVURQ1 40V、低压降 (LDO) 线性稳压器

一、TPS7B82-Q1 汽车类 300mA、高压、超低 IQ 低压降稳压器 (介绍)在汽车电池连接应用中,低静态电流 (IQ) 对于省电和延长电池寿命而言至关重要。对于始终开启的系统,必须要实现超低 IQ。 TPS7B82-Q1 是一款旨在在 3V 至 40V&…

【C++】运算符重载 ⑧ ( 左移运算符重载 | 友元函数 / 成员函数 实现运算符重载 | 类对象 使用 左移运算符 )

文章目录 一、左移运算符重载1、友元函数 / 成员函数 实现运算符重载2、类对象 使用 左移运算符3、左移运算符 << 重载 二、完整代码示例 一、左移运算符重载 1、友元函数 / 成员函数 实现运算符重载 运算符重载 的正规写法一般都是 使用 成员函数 的形式 实现的 ; 加法…

Llama2-Chinese项目:8-TRL资料整理

TRL&#xff08;Transformer Reinforcement Learning&#xff09;是一个使用强化学习来训练Transformer语言模型和Stable Diffusion模型的Python类库工具集&#xff0c;听上去很抽象&#xff0c;但如果说主要是做SFT&#xff08;Supervised Fine-tuning&#xff09;、RM&#x…

Python脚本实现xss攻击

实验环境&#xff1a;zd靶场、vscode 知识点 requests.session() 首先我们需要先利用python requests模块进行登录&#xff0c;然后利用开启session记录&#xff0c;保持之后的操作处于同一会话当中 requests.session()用于创建一个会话(session)的实例对象。使用requests库…

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式

多线程进阶&#xff08;一&#xff09; 文章目录 多线程进阶&#xff08;一&#xff09;单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式&#xff0c;为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…

Python无废话-办公自动化Excel格式美化

设置字体 在使用openpyxl 处理excel 设置格式&#xff0c;需要导入Font类&#xff0c;设置Font初始化参数&#xff0c;常见参数如下&#xff1a; 关键字参数 数据类型 描述 name 字符串 字体名称&#xff0c;如Calibri或Times New Roman size 整型 大小点数 bold …

做外贸独立站选Shopify还是WordPress?

现在确实会有很多新人想做独立站&#xff0c;毕竟跨境电商平台内卷严重&#xff0c;平台规则限制不断升级&#xff0c;脱离平台“绑架”布局独立站&#xff0c;才能获得更多流量、订单、塑造品牌价值。然而&#xff0c;在选择建立外贸独立站的过程中&#xff0c;选择适合的建站…