当前位置: 首页 > news >正文

数据结构(学习版)

考纲

(一)数据结构部分;

  1. 线性表
  2. 栈、队列、数组
  3. 查找和内部排序
  4. 树和图

(二)计算机算法设计部分:

  1. 递归与分省策路、回溯法
  2. 贪心算法、分支限界法、动态规划
  3. 算法设计中的数据结构运用

(三)程序设计基础(C或C++)部分:

  1. 基本数据类型、各种运算符和表达式、基本控制结构。
  2. 数组的定义、数组元素的引用、数组的初始化,掌握与字符串相关的库函数
  3. 函数的定义语法,函数调用中参数的传递机制:局部和全局变量的有效范围
  4. 结构体类型变量的定义、引用、初始化方法,结构体数组的定义、初始化和应用,共同体变量的定义和使用方法。
  5. 地址和指针的基本概念,如何使用指针来处理数组、字符串以及结构体,函数指针的基本概念以及使用。
  6. 文件的定义以及对文件进行的各种操作的库函数。

数据结构

# 第二章  线性表

1.顺序存储

1.1顺序表

顺序表的特点是表中元素的逻辑顺序与其存储的物理顺序相同。

1.1.1静态分配
#define MaxSize 50 //定义线性表的最大长度
typedef struct{ElemType data[MaxSize]; //顺序表的元素int length; //顺序表的当前长度
)SqList; //顺序表的类型定义
1.1.2动态分配
#define Initsize 100 //表长度的初始定义
typedef struct{ElemType *data; //指示动态分配数组的指针int MaxSize,length; //数组的最大容量和当前个数
)SeqList; //动态分配数组顺序表的类型定义
1.2顺序表的基本操作
1.2.1初始化操作
//静态分配//sqList L; //声明一个顺序表
void Initlist(SqList SL)(L.length=0; //顺序表初始长度为0
)

静态分配在声明一个顺序表时,就已为其分配了数组空间,因此初始化时只需将顺序表的当前长度设为0。

//动态分配void Initlist(SeqList 6L){L.data=(ElemType *)malloc(MaxSize*sizeof(ElemType));//分配存储空间L.length=0; //顺序表初始长度为0L.MaxSize=Initsize; //初始存储容量
)

动态分配的初始化为顺序表分配一个预定义大小的数组空间,并将顺序表的当前长度设为0。
MaxSize指示顺序表当前分配的存储空间大小,一旦因插入元素而空间不足,就进行再分配。
 

1.2.2插入操作O(n)
bool ListInsert(Sqlist &l,int i,ElemType e)(if(i<11li>L.length+1) //判断i的范围是否有效return false;if(L.length>=MaxSize) //当前存储空间已满,不能插入return false;for(int j=L.length;j>=i;j--) //将第1个元素及之后的元素后移L.data[j]=L.data[j-1];L.data[i-1]=e;        //在位置i处放入eL.length++;           //线性表长度加1return true;
)

在顺序表L的第i(1<=i<=L.length+1)个位置插入新元素e。若i的输入不合法,则返回 false,表示插入失败;否则,将第i个元素及其后的所有元素依次往后移动一个位置,腾出一个空位置插入新元素 e,顺序表长度增加1,插入成功,返回 true。
 

1.2.3删除操作O(n)
bool ListDelete(SqList 6L,int i,ElemType 6e)(if(i<1lli>L.length) //判断i的范围是否有效return false;e=L.data[i-1]; //将被删除的元素赋值给efor(int j=i;j<L.length;j++) //将第1个位置后的元素前移L,data[j-1]=L,data[j];L.length--;    //线性表长度减1return true;
)

删除顺序表L中第i(1<=i<=L.length)个位置的元素,用引用变量e返回。若i的输入不合法,则返回false;否则,将被删元素赋给引用变量e,并将第i+1个元素及其后的所有元素依次往前移动一个位置,返回true。

1.2.4查找操作(按值查找)O(n)
int LocateElem(SqList L,ElemType e)(int i;for(i=0;i<L.length;i++)if(L.data[i]==e)return i+1;     //下标为i的元素值等于e,返回其位序i+1return 0;               //退出循环,说明查找失败
)

2链式存储 

2.1单链表
2.1.1单链表初始化
2.1.2求表长操作
2.1.3按序号查找结点
2.1.4按值查找表结点
2.1.5插入结点操作
2.1.6删除节点操作
2.1.7头插法建立单链表
2.1.8尾插法建立单链表
3.1双链表
3.1.1插入操作
3.1.2删除操作
3.2循环链表
3.3静态列表

3.顺序表和链表的比较

顺序表的主要优点:
①可进行随机访问,即可通过首地址和元素序号可以在O(1)时间内找到
指定的元素;
②存储密度高,每个结点只存储数据元素。
顺序表的缺点也很明显:
①元素的插入和删除需要移动大量的元素,插入操作平均需要移动n/2个元素,删除操作平均需要移动(n-1)/2个元素;
②顺序存储分配需要一段连续的存储空间,不够灵活。
 


 

相关文章:

数据结构(学习版)

考纲 (一)数据结构部分; 线性表栈、队列、数组查找和内部排序树和图 (二)计算机算法设计部分: 递归与分省策路、回溯法贪心算法、分支限界法、动态规划算法设计中的数据结构运用 (三)程序设计基础(C或C)部分: 基本数据类型、各种运算符和表达式、基本控制结构。数组的定义…...

除了知云文献翻译外,这几款翻译工具值得推荐!

近年来&#xff0c;市面上涌现出众多优秀的文献翻译工具&#xff0c;其中知云文献翻译凭借其强大的功能受到了广泛好评。然而&#xff0c;除了知云文献翻译外&#xff0c;还有几款翻译工具同样值得推荐。今天&#xff0c;就让我们一起来了解一下&#xff01; Foxit在线翻译 链…...

Element UI动态实现面包屑导航~

思路&#xff1a;监听路由变化&#xff0c;在路由规则中添加meta然后在组件中渲染。 import Vue from "vue" import VueRouter from "vue-router" Vue.use(VueRouter) // 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题 const origin…...

安科瑞Acrel-2000ES储能能量管理系统在新型电力系统下分布式储能的研究

摘要&#xff1a;传统电力系统的结构和运行模式在以新能源为主体的新型电力系统中发生了巨大的变化&#xff0c;分布式储能作为电力系统中重要的能量调节器&#xff0c;也迎来了新的发展机遇。立足于储能技术发展现状&#xff0c;分析了分布式储能技术特点及在清洁可再生能源方…...

Git 逆转时光:版本回退操作详解

git 版本回退操作详解 一、Git的工作流程二、git clean尚未 commit 的修改三、已经 commit 尚未 push 到 remote 仓库四、已经提交到 remote 仓库五、回退建议六、总结 一、Git的工作流程 在讲这个版本回退之前&#xff0c;我们要温习一下Git的原理。下面这张图就是 Git 的整个…...

8.6.数据库基础技术-数据库的控制

并非控制 事务&#xff1a;由一系列DML操作组成&#xff0c;这些操作&#xff0c;要么全做&#xff0c;要么全不做&#xff0c;它从第一个DML操作开始&#xff0c;rollback、commit或者DDL结束&#xff0c;拥有以下四种特性&#xff0c;详解如下&#xff1a; &#xff08;操作)…...

php语言基础入门

文章目录 php语言基础入门一、简介二、基础语法1、变量2、常量3、注释4、基础数据类型4.1、整形数据类型4.2、布尔数据类型4.3、字符串数据类型4.4、浮点型数据类型4.5、PHP数据类型之查看和判断数据类型 5、流程控制5.1、if-elseif-else语句使用5.2、switch语句使用5.3、while…...

告别杂音,从 AI 音频降噪开始

生活中&#xff0c;音频无处不在。无论是聆听动人的音乐&#xff0c;还是参与重要的电话会议&#xff0c;又或是沉浸于精彩的网课学习&#xff0c;清晰、纯净的音频质量都至关重要。然而&#xff0c;音频中的噪声却像不速之客&#xff0c;扰乱着这份美好。 音频中的噪声形式多样…...

Postman中params传参与Body传参区别以及Body中不同类型的区别

Postman中params传参与Body传参区别 在HTTP请求中&#xff0c;参数可以通过不同的方式传递给服务器&#xff0c;其中最常见的两种方式是使用params&#xff08;查询参数&#xff09;和body&#xff08;请求体&#xff09;。以下是它们的主要区别&#xff1a; 1. 位置&#xf…...

数据结构入门——05队列

1.队列 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先 进先出FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为队尾出队列&#xff1a;进行删除操作的一端称为队头 队列也可以数…...

使用python MySQL 实现一个 key-value(string:json) 读写库

在Python中,我们可以使用`pymysql`库(如果MySQL服务器版本较高,也推荐使用`mysql-connector-python`)来建立一个简单的key-value存储库,其中键是字符串,值是JSON格式的数据。这里我们创建一个基本的类来完成读写操作: import pymysql.cursors import jsonclass JsonKVS…...

实现:uniapp项目分享视频页面到微信,可以自定义分享的页面样式及内容

背景&#xff1a;最近在逐步完善一个uniapp项目的视频功能&#xff0c; 包括有视频录制及发布&#xff0c;在完善过程中想要实现分享 视频到微信的功能&#xff0c;也就是相当于分享链接到微信&#xff0c; 微信打开后可以获取到视频并可以观看&#xff0c;有了想法便 准备实行…...

【C++】—— 类与对象(五)

【C】—— 类与对象&#xff08;五&#xff09; 1、类型转换1.1、类型转换介绍1.2、类型转换的应用1.3、explicit 关键字 2、static 静态成员2.1、static 静态成员变量2.2、static 静态成员函数2.3、总结 3、友元3.1、友元函数3.2、友元类 4.内部类5、匿名对象6、对象拷贝时的编…...

scp命令的使用

在Windows和Linux之间传文件&#xff0c;最简单的是共享目录&#xff0c;如果不能使用共享目录&#xff0c;可以使用scp命令&#xff0c; 一般Windows和Linux都支持。 scp命令是secure copy的缩写&#xff0c;用于在Linux下进行远程文件拷贝&#xff0c;windows一般也有该命令…...

定位和解决线上接口性能优化或者数据库性能优化的思路是什么?

定位和解决线上接口性能优化或数据库性能优化问题是一项复杂且系统性的工作&#xff0c;需要综合运用监控、分析、调优等手段。以下是一个详细的思路&#xff0c;帮助您从定位问题到解决问题&#xff0c;确保系统的高效运行。 一、定位接口性能问题 1.1 监控和日志 1.1.1 监…...

修改docker的/var/lib/docker/overlay2储存路径

目录 目录 1.准备新的存储位置 1.创建新的存储目录 2.修改目录权限 2. 配置 Docker 使用新的存储位置 1.停止 Docker 服务 2.编辑 Docker 配置文件 3.迁移现有 Docker 数据 1.将现有的 Docker 数据从系统盘移动到新目录 2.启动 Docker 服务 3. 验证更改 4. 清理旧的…...

解决中国式报表难题,这款工具真的免费且好用

一、概述 报表&#xff0c;对于任何企业或组织来说都不陌生。它将复杂的数据信息以简洁明了的方式展现出来&#xff0c;帮助决策者快速理解数据背后的趋势和问题。无论是财务报表、销售报表&#xff0c;还是库存报表&#xff0c;都是日常工作中不可或缺的部分。然而&#xff0…...

图解Kafka | 彻底弄明白 Kafka 两个最重要的配置

我已经使用 Kafka 近两年了&#xff0c;我发现有两个配置很重要&#xff0c;但是不太容易理解。这两个配置分别是acks和min.insync.replicas。 本文将通过一些插图来帮助理解这2个配置&#xff0c;以便更好的使用Kafka为我们服务。 复制 我假设你已经熟悉 Kafka了 &#xff…...

创建线程的三种方式

创建线程的三种方式 1. Thread 匿名内部类 Slf4j public class CreateThread {public static void main(String[] args) {Thread t1 new Thread("t1") {Overridepublic void run() {log.info("hello world");}};t1.start();} }2.定义 Runable public s…...

官宣|Apache Flink 1.20 发布公告

作者&#xff1a;郭伟杰(阿里云), 范瑞(Shopee) Apache Flink PMC&#xff08;项目管理委员&#xff09;很高兴地宣布发布 Apache Flink 1.20.0。与往常一样&#xff0c;这是一个充实的版本&#xff0c;包含了广泛的改进和新功能。总共有 142 人为此版本做出了贡献&#xff0c;…...

别再只用Chat了!深度挖掘Cursor的‘规则’与‘上下文’功能,打造你的专属AI编程助手

解锁Cursor的隐藏力量&#xff1a;从代码助手到项目级智能架构师 在AI编程工具爆发的时代&#xff0c;大多数开发者仅仅停留在基础对话和代码补全的层面。但Cursor的真正价值远不止于此——它能够成为你项目架构的智能协作者、团队规范的自动化执行者&#xff0c;以及复杂工程问…...

Megatron-LM源码解析:Tensor与Sequence并行训练中的通信优化策略

1. Megatron-LM并行训练基础概念 在分布式训练领域&#xff0c;Megatron-LM已经成为大规模语言模型训练的事实标准框架。我第一次接触这个框架时&#xff0c;就被它精妙的并行设计所震撼。Tensor并行和Sequence并行是其中两种核心并行策略&#xff0c;理解它们的通信机制对优化…...

《YOLO11魔术师专栏》专栏介绍 专栏目录

《YOLO11魔术师专栏》将从以下各个方向进行创新&#xff08;更新日期25.07.23&#xff09;&#xff1a; 【原创自研模块】【多组合点优化】【注意力机制】 【主干篇】【neck优化】【卷积魔改】 【block&多尺度融合结合】【损失&IOU优化】【上下采样优化 】 【小目标…...

关联分析——从购物篮到推荐引擎的算法演进

1. 从购物篮到推荐引擎的关联分析演进 记得我第一次接触关联分析是在2015年&#xff0c;当时在一家零售企业做数据分析。老板扔给我一堆购物小票数据&#xff0c;让我找出"像啤酒和尿布那样的神奇组合"。那时候我才明白&#xff0c;原来数据里藏着这么多有趣的秘密。…...

AI率15-20-30哪来的各平台要求全汇总

论文AI率多少算合格&#xff1f;15%&#xff1f;20%&#xff1f;30%&#xff1f; 这个问题没有统一答案&#xff0c;因为不同学校、不同平台的标准不一样。搞清楚这个&#xff0c;你才知道自己的目标线在哪里&#xff0c;才能判断用什么工具处理、处理到什么程度就够了。 检测…...

Cursor Pro免费激活终极指南:3步永久解锁AI编程神器

Cursor Pro免费激活终极指南&#xff1a;3步永久解锁AI编程神器 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial…...

IntelliJ IDEA 彻底AI化!2026.1 版重磅发布,太香了

备受期待的 IntelliJ IDEA 2026.1 版本现已正式发布&#xff01;本次更新带来了多项重磅功能&#xff0c;从 AI 智能体深度集成到主流语言框架的一流支持&#xff0c;全方位提升开发效率。无论您是 Java、Kotlin 开发者&#xff0c;还是涉及 C/C、TypeScript 的多语言项目开发者…...

别再只用BCE了!用PyTorch实现ASL损失函数,搞定多标签分类中的样本不均衡

多标签分类新范式&#xff1a;PyTorch实战ASL损失函数解决样本不均衡难题 在图像标注、医学诊断或文本情感分析等多标签分类任务中&#xff0c;我们常常遇到一个棘手问题——某些标签的出现频率可能比其他标签高出几个数量级。想象一下&#xff0c;当你构建一个商品标签系统时&…...

vLLM-v0.17.1参数详解:max_num_seqs与max_model_len调优策略

vLLM-v0.17.1参数详解&#xff1a;max_num_seqs与max_model_len调优策略 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库&#xff0c;以其出色的吞吐量和易用性在AI社区广受欢迎。这个项目最初由加州大学伯克利分校的天空计算实验室开发&#xff…...

2026-04随笔记

2026-04-01因为前天工作卡住了&#xff0c;导致昨天没心情研究&#xff0c;一度以为我不适合这个工作&#xff0c;早上的时候回想了一下成功和失败的场景认真做对比细心分析发现一个 LoadBalance的ip没设置&#xff0c;虽然自动获取了&#xff0c;但是helm的其他地方也用了这个…...