数组实现树结构
数组实现树结构在本课程中,涉及二叉树甚至多叉树的题目用指针确实都可以做,但考虑到大家对指针掌握程度有限;使用指针时容易出现各种内存问题;即使不出现内存问题,使用指针的程序在调试时也会非常不方便。因此,在此给出用数组实现树的 demo,方便大家做题: 定义二叉树1234567891011121314151617181920212223#define TREE_SIZE 1000 // 最大节点数 int left[TREE_SIZE], right[TREE_SIZE]; // 存左右子节点编号int values[TREE_SIZE]; // 存每个节点的值const int root = 1; // 根节点编号固定为1int cnt = 0; // 当前节点总数(编号最大值)// 创建一棵新树void newtree(int value){ left[root] = right[root] = 0; // 初始化左右子树为空 values[root] = value; // 给根节点赋值 cnt = root; // 当前只有根节点}//...
MySQL 学习笔记
1. 初识数据库1.1 数据库分类关系型数据库:(RDB)✅ 特点: • 结构化数据:数据以表格(table)的形式存储,每张表有固定的列结构。 • 数据关系明确:表与表之间可以通过主键(Primary Key)和外键(Foreign Key)建立关系。 • 支持SQL语言:使用结构化查询语言(SQL)进行数据操作。 • 事务支持强:遵循ACID原则(原子性、一致性、隔离性、持久性),适用于需要高数据一致性的场景。 📚 常见的关系型数据库: • MySQL • PostgreSQL • Oracle • Microsoft SQL Server 非关系型数据库:(NoSQL-> Not Only SQL)✅ 特点: • 灵活的数据结构:不使用表结构,支持多种数据模型,如键值对、文档、列族、图形等。 • 高扩展性:通常设计为分布式系统,易于水平扩展(scale out)。 • 高性能:适用于高并发读写、海量数据处理。 • 最终一致性:通常采用CAP理论中强调可用性和分区容忍性,牺牲部分一致性。 📚...
链表小技巧 & 常见问题
链表小技巧 & 常见问题 Written by Baymax 使用宏定义简化malloc1234567891011#define new(X) (X*)malloc(sizeof(X))typedef struct Node{ ... struct Node* next; ...}Node;//原来创建节点的方式Node *node = (Node*)malloc(sizeof(Node));//简化后创建节点方式Node *node = new(Node); 使用头节点头节点是链表中的一个特殊节点,通常位于链表的最前端。它并不存储有效数据,而是一个辅助节点,用于简化链表操作,例如: 123456789101112131415161718192021// 没有使用头节点typedef struct Node { int data; struct Node* next;}Node;Node* head = NULL; // 链表头指针,空链表Node* newNode =...
VSCode 配置教学
VSCode 配置(保姆级教学)在担任数据结构课程助教期间,许多同学在使用VSCode配置编程环境时遇到了各种疑难问题,基于这个普遍存在的技术痛点,我决定系统梳理VSCode的配置方法,经过一晚上的研究,最终将配置心得整理成这篇教程类文章。 配置环境编写 C 语言的第一步就是得有一个编译器,此处推荐使用 tdm-gcc,下载教程参考 这里。 下载VSCode官网下载vscode,下载完成后打开vscode的插件市场,下载以下所有插件: 下载完成后,开始配置vscode的设置。 配置VSCodevscode的配置主要涉及两个文件:tasks.json 与 launch.json,如何进行配置呢? 新建一个文件夹 新建一个没有中文路径的文件夹,用来存放要写的C语言代码。 使用vscode打开这个文件夹 打开文件夹后,创建一个C语言文件 如上图所示,此处我创建的文件夹叫做 JUST_FOR_TEST,点击红框里的图标创建新文件,假设名为 test.c,完成后如下图: 配置 tasks.json 如下图所示,点击右上角的三角形图案,点击 ...
Git 学习笔记
Git 学习笔记版本控制学习git之前,需要先明白版本控制。 版本控制 是一种管理文件(尤其是代码文件)变更的系统,它记录了文件的历史变动,并允许多个开发者或团队协作开发项目。通过版本控制,开发者可以追踪文件的每个修改、比较不同版本的变化、恢复历史版本,以及解决多人并发修改时的冲突。 版本控制分类 本地版本控制 集中版本控制 SVN 分布式版本控制 Git SVN 与 Git 的主要区别 SVN 是集中式版本控制系统,版本库都是集中放在中央服务器的,开发者从中央仓库检出(checkout)文件到本地,并在本地进行修改,修改完成后,开发者需要将更改提交(commit)回中央仓库。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。 在 Git 中,每个开发者的机器上都有项目的完整副本,包括版本历史。开发者在本地进行提交(commit),本地仓库记录所有的变动。开发者可以在没有网络连接的情况下工作,当有网络时,将本地的更改推送(push)到远程仓库,或者拉取(pull)远程仓库的更新。 Git 环境配置查看配置1git config...
Docker 学习笔记
Docker 学习笔记Docker 的基本组成Docker 引入了三个名词:镜像、容器和仓库。 镜像(image): docker 镜像相当于一个模版,可以通过模版来创建容器,需要的服务就是在容器中运行的。 容器(container): docker 利用容器技术,独立运行不同的服务。容器包含启动、停止、删除等基本命令。 仓库(repository): 仓库就是存放镜像的地方。 Docker run的运行流程图 Docker 的常用命令帮助命令123docker version # 显示docker的版本信息docker info # 显示docker的系统信息,包括镜像和容器的数量docker 命令 --help # 帮助命令 官方文档: https://docs.docker.com/reference/cli/docker/ 镜像命令 docker images 1234docker images # 查看本机上所有镜像 # 可选项 -a # 列出所有镜像 -q # 只显示镜像的id docker search 12345docker...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment
第三章 8086寻址方式和指令系统
第三章 8086寻址方式和指令系统1. 8086 的 8 种寻址方式 立即寻址 1MOV CX,2A50H 寄存器寻址 12DX=18C7H,AX=3A68HMOV DX,AX ;DX=3A68H 直接寻址 为了和立即数区分,指令中有效地址两侧需要加一个方括号。 12DS= 3000H, (32000H)=34H, (32001H)=12HMOV CX,[2000H] ;CX=1234H 寄存器间接寻址 指令中给出的寄存器中的值不再是操作数本身,而是操作数的有效地址。 ps:出现在中括号[]里的只能是BX,BP,SI,DI。其中BP比较特殊,默认是和SS寄存器搭配,其他三个默认与DS搭配。 物理地址 = $16\times$DS + BX (或SI,DI) 物理地址 = $16\times$SS + BP 12DS=1000H, SI=2000H, (12000H)=318BHMOV BX,[SI]...