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

数据结构(链栈——c语言实现)

      链式栈(Linked Stack)是一种基于链表数据结构实现的栈。它利用链表节点的指针来存储元素,并通过指针的链接关系来维护栈的后进先出(LIFO, Last In First Out)特性。

链式栈的优点

  1. 动态大小

           链式栈的大小可以动态调整,不需要在创建时指定栈的最大容量。当栈满时,只需创建一个新的节点并将其链接到栈顶即可。
  2. 内存效率高

           链式栈只在需要时分配内存,不需要像数组那样预先分配一大块连续的内存空间。因此,它更适合于内存分配困难的嵌入式系统或内存碎片较多的环境。
  3. 避免内存浪费

           链式栈在元素弹出(pop)时,可以释放已使用节点的内存,避免内存浪费。而数组实现的栈在栈收缩时通常不能立即释放未使用的内存。
  4. 操作灵活性

           链式栈在栈顶和栈底的插入和删除操作都相对高效,因为这些操作只涉及指针的修改,不需要移动大量数据。
  5. 易于实现复杂操作

           由于链式栈的节点是独立的,可以很容易地实现一些复杂的栈操作,如栈的合并、分割、复制等。
  6. 无需初始化大量空间

           在实际应用中,栈的大小往往难以预估。链式栈可以根据需要动态增长,而不需要在初始化时分配过多的空间。
  7. 减少栈溢出风险

                在一些应用场景中,栈的大小可能会非常大,数组实现的栈可能会遇到栈溢出的问题。           链式栈由于动态分配内存,可以有效减少这种风险。  

链栈 

       链式栈的实现和链表类似,都是用指针来保存下一个节点的地址,在这里也是约定头节点不存数据;因为栈只能在一端进行操作,因此我们以头结点的位置来进行压栈和弹栈操作。

#ifndef _LINKSTACK_H
#define _LINKSTACK_H#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef char Type;
typedef struct link{Type data; struct link *rear;  //存储下一个节点地址
}lstack;//创建栈
lstack *create_lstack();
//判空 空为0非空为1
int empty_lstack(lstack *l);
//求长度
int length_lstack(lstack *l);
//压栈
void push_lstack(lstack *l,Type data);
//弹栈
Type pop_lstack(lstack *l);
//取栈顶元素
Type get_lstack(lstack *l);
//初始化
void init_lstack(lstack *l);
//回收
void free_lstack(lstack **l);#endif

        在创建结构体的时候,结构体名也是不能省略,因为我们在结构体里面需要使用结构体 *类型的指针来指向下一个节点;结构体成员就两个,一个是用来保存数据的变量data,另外一个是结构体指针,相当于链。

#include "linkstack.h"//创建栈
lstack *create_lstack()
{lstack *l = (lstack *)malloc(sizeof(lstack));if(NULL == l){perror("create lstack malloc");return NULL;}l->rear = NULL;return l;
}
//判空 空为0非空为1
int empty_lstack(lstack *l)
{if(NULL == l){puts("lstack is NULL");return -1;}if(l->rear){return 1;}else{puts("stack is empty");return 0;}
}
//求长度
int length_lstack(lstack *l)
{if(NULL == l){puts("lstack is NULL");return -1;}int n = 0;while(l->rear){n++;l = l->rear;}return n;
}
//压栈
void push_lstack(lstack *l,Type data)
{if(NULL == l){puts("lstack is NULL");return;}lstack *s = (lstack *)malloc(sizeof(lstack));s->data = data;s->rear = l->rear;l->rear = s;
}
//弹栈
Type pop_lstack(lstack *l)
{if(empty_lstack(l) == 1){lstack *s = l->rear;l->rear = s->rear;Type d = s->data;free(s);return d;}
}
//取栈顶元素
Type get_lstack(lstack *l)
{if(empty_lstack(l) == 1){return l->rear->data;}
}
//初始化
void init_lstack(lstack *l)
{if(NULL == l){puts("lstack is NULL");return;}while(l->rear){lstack *s = l->rear;l->rear = s->rear;free(s);}
}
//回收
void free_lstack(lstack **l)
{if(NULL == l){puts("lstack is NULL");return;}init_lstack(*l);free(*l);*l = NULL;
}

创建栈: lstack *create_lstack()

       创建同样是在堆区开辟空间,开辟空间之后判断开辟是否成功,成功之后让里面的指针rear指向NULL,头节点不存数据,因此不需要给data赋值,最后返回这个开辟空间的地址。

判空: int empty_lstack(lstack *l)

       既然我们操作的是头节点,因此判空只需要判断头节点的下一个是否为空就能知道栈是否为空,空栈函数返回0,非空函数返回1。

求长度:int length_lstack(lstack *l)

       求长度其实就和遍历一样,使用一个循环来遍历这个栈,然后用一个变量来计数,最后返回这个计数的值即可。

压栈:void push_lstack(lstack *l,Type data)

       压栈其实就和链表的头插一样,先创建节点,创建完成之后给data赋值,然后让新节点的rear指向头节点的下一个,最后让头节点的rear指向新节点即可。

弹栈:Type pop_lstack(lstack *l)

       弹栈操作和压栈正好相反,我们先使用一个指针来接收要删除的节点,然后把原来头节点与这个节点之间的链断开,接着让头结点的rear指向要删除节点的下一个,最后将空间释放即可;在这里弹栈我们不止要把这个元素弹出来,我们还需要使用一个变量来接收弹出来的这个元素,让它作为弹栈函数的返回值。

获取栈顶元素:Type get_lstack(lstack *l)

       获取栈顶元素也就是将头节点的下一个节点里面的data的值作为函数的返回值直接反出来即可。

初始化:void init_lstack(lstack *l)

        链栈的初始化与链表是一样的,首先循环遍历,在每次循环时定义一个指针接收节点,将节点空间释放掉;将除了头节点以外的节点都释放掉,这就是链式栈的初始化。

回收:void free_lstack(lstack **l)

       链式栈的回收函数传参同样是传二级指针,这里需要拿到链式栈头节点的指针地址,现将链式栈初始化,最后再把头节点空间释放掉,最后让指向头结点的指针指向NULL即可。

测试(主函数)

#include "linkstack.h"
int main(int agrc,char *agrv[])
{lstack *s = create_lstack();empty_lstack(s);puts("压栈,压入a");push_lstack(s,'a');puts("压栈,压入b");push_lstack(s,'b');puts("压栈,压入A");push_lstack(s,65);printf("此时链栈的长度为:%d\n",length_lstack(s));printf("取此时栈顶元素为:%c\n",get_lstack(s));puts("弹栈");pop_lstack(s);//puts("弹栈");//pop_lstack(s);printf("取此时栈顶元素为:%c\n",get_lstack(s));printf("此时链栈的长度为:%d\n",length_lstack(s));puts("初始化栈链");init_lstack(s);printf("此时链栈的长度为:%d\n",length_lstack(s));free_lstack(&s);printf("s=%p\n",s);return 0;
}

相关文章:

数据结构(链栈——c语言实现)

链式栈&#xff08;Linked Stack&#xff09;是一种基于链表数据结构实现的栈。它利用链表节点的指针来存储元素&#xff0c;并通过指针的链接关系来维护栈的后进先出&#xff08;LIFO, Last In First Out&#xff09;特性。 链式栈的优点 动态大小&#xff1a; 链式栈…...

FPGA实现串口升级及MultiBoot(九)BPI FLASH相关实例演示

本文目录索引 区别一:启动流程的区别区别二:高位地址处理区别三:地址映射例程说明总结例程地址之前一直都是以SPI FLASH为例进行相关知识讲解,今天我们介绍另一款常用的配置FLASH-BPI FLASH。 今天的讲解以简洁为主,主打个能用一句话不说两句话。以和SPI区别为主,实例演…...

Android 网络通信(三)OkHttp实现登入

学习笔记 目录 一. 先写XML布局 二、创建 LoginResponse 类 :封装响应数据 目的和作用: 三、创建 MyOkHttp 类 :发送异步请求 代码分析 可能改进的地方 总结 四、LoginActivity 类中实现登录功能 详细分析与注释: 总结: 改进建议: 零、响应数据样例 通过 P…...

java基础概念37:正则表达式2-爬虫

一、定义 【回顾】正则表达式的作用 作用一&#xff1a;校验字符串是否满足规则作用二&#xff1a;在一段文本中查找满足要求的内容——爬虫 二、本地爬虫VS网络爬虫 2-1、本地爬虫 示例&#xff1a; 代码优化&#xff1a; public static void main(String[] args) {// 大…...

【大数据学习 | Spark-Core】RDD的概念与Spark任务的执行流程

1. RDD的设计背景 在实际应用中&#xff0c;存在许多迭代式计算&#xff0c;这些应用场景的共同之处是&#xff0c;不同计算阶段之间会重用中间结果&#xff0c;即一个阶段的输出结果会作为下一个阶段的输入。但是&#xff0c;目前的MapReduce框架都是把中间结果写入到HDFS中&…...

day06(单片机高级)PCB设计

目录 PCB设计 PCB设计流程 元器件符号设计 原理图设计 元器件封装设计 元器件库使用 PCB设计 目的&#xff1a;学习从画原理图到PCB设计的整个流程 PCB设计流程 元器件符号设计 元器件符号&#xff1a;这是电子元器件的图形表示&#xff0c;用于在原理图中表示特定的元器件。例…...

[Redis#2] 定义 | 使用场景 | 安装教程 | 快!

目录 1. 定义 In-memory data structures 在内存中存储数据 2. 优点&#xff01;快 Programmability 可编程性 Extensibility 扩展性 Persistence 持久化 Clustering 分布式集群 High availability 高可用性 ⭕快速访问的实现 3. 使用场景 1.Real-time data store …...

docker pull命令拉取镜像失败的解决方案

docker pull命令拉取镜像失败的解决方案 简介&#xff1a; docker pull命令拉取镜像失败的解决方案 docker pull命令拉取镜像失败的解决方案 一、执行docker pull命令&#xff0c;拉取镜像失败 报错信息&#xff1a;error pulling image configuration: Get https://produc…...

漫步北京小程序构建智慧出行,打造旅游新业态模式

近年来&#xff0c;北京市气象服务中心持续加强推进旅游气象服务&#xff0c;将旅游气象监测预警基础设施纳入景区配套工程&#xff0c;提升气象和旅游融合发展水平&#xff0c;服务建设高品质智慧旅游强市。 天气条件往往影响着旅游景观的体验&#xff0c;北京万云科技有限公…...

DNS域名解析服务器

一、dns简介及域名 DNS(Domain Name System) : 作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能便捷互联网的访问。使用53端口&#xff0c;通常以UDP较快的数据传输协议来查询&#xff0c;如果没有查询到&#xff0c;将再次启动TCP重新查询&#xff0c;两者同时启…...

MySQL数据存储详解

1. MySQL 的数据存放位置 当我们在 MySQL 数据库中创建一个表时&#xff0c;MySQL 会在数据库对应的文件夹下生成三个文件&#xff1a; 1.1 db.opt 文件 是什么&#xff1a; 每个数据库都有一个 db.opt 文件&#xff0c;这个文件保存了数据库的配置信息。作用&#xff1a; 记…...

Maven maven项目构建的生命周期 Maven安装配置 IDEA 配置 Maven

一&#xff0c;Maven的概述 Maven的作用&#xff1a;专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提…...

和为 K 的子数组(java)

题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xf…...

关于Redux的学习(包括Redux-toolkit中间件)

目录 什么是 Redux &#xff1f; 我为什么要用 Redux &#xff1f; 我什么时候应该用 Redux &#xff1f; Redux 库和工具 React-Redux Redux Toolkit Redux DevTools 拓展 一个redux小示例 代码示例(很有用)&#xff1a; Redux 术语 Actions Reducers Store Dis…...

MIT 6.S081 | 操作系统 | Lab1: Xv6 and Unix utilities

Lab1: Xv6 and Unix utilities 文章目录 Lab1: Xv6 and Unix utilities实验任务1.启动XV6(easy)2.Sleep(easy)-练手的&#xff0c;就是熟悉一下怎么在xv6项目中加.c文件&#xff0c;生成可执行程序并进行测试的1.解析rm.c2.argc 如何被赋值3.Sleep代码4.makefile编辑5.通过make…...

04 - 尚硅谷 - MQTT 客户端编程

1.在Java中使用MQTT 1.1 Eclipse Paho Java Client 具体步骤&#xff1a; 1、创建一个Spring Boot项目&#xff0c;添加如下依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>…...

C语言基础学习:抽象数据类型(ADT)

基础概念 抽象数据类型&#xff08;ADT&#xff09;是一种数据类型&#xff0c;它定义了一组数据以及可以在这组数据上执行的操作&#xff0c;但隐藏了数据的具体存储方式和实现细节。在C语言中&#xff0c;抽象数据类型&#xff08;ADT&#xff09;是一种非常重要的概念&…...

蓝桥杯每日真题 - 第16天

题目&#xff1a;&#xff08;卡牌&#xff09; 题目描述&#xff08;13届 C&C B组C题&#xff09; 解题思路&#xff1a; 题目分析&#xff1a; 有 n 种卡牌&#xff0c;每种卡牌的现有数量为 a[i]&#xff0c;所需的最大数量为 b[i]&#xff0c;还有 m 张空白卡牌。 每…...

【Docker】快速部署 Pikachu:一个包含常见 Web 安全漏洞的渗透测试练习靶场

系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Pikachu上的漏洞类型列表如下&#xff1a; Burt Force(暴力破解漏洞) XSS…...

【解决】Unity TMPro字体中文显示错误/不全问题

问题描述&#xff1a;字体变成方块 原因&#xff1a;字体资源所承载的长度有限 1.找一个中文字体放入Assets中 2.选中字体创建为TMPro 字体资源 3.选中创建好的字体资源&#xff08;蓝色的大F&#xff09; 在右边的属性中找到Atlas Width h和 Atlas Heigth,修改的大一点&…...

速通前端篇 —— CSS

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;速通前端 目录 CSS的介绍 基本语法规范 CSS选择器 标签选择器 class选择器 id选择器 复合选择器 通配符选择器 CSS常见样式 颜…...

【案例】泛微.齐业成助力北京中远大昌汽车实现数电票全流程管理

中远大昌统一发票共享平台上线三个多月以来&#xff0c;实现&#xff1a; 5000份 60000元 发票开具 成本节约 客户简介及需求分析 北京中远大昌汽车服务有限公司&#xff08;以下简称“中远大昌”&#xff09;成立于2002年&#xff0c;是中远海运集团所属香远&#xff08;北…...

Windows系统运行库软件游戏修复工具

本页面下载的资源包包括PC电脑常用的运行库和电脑必备组件&#xff0c;如您的电脑出现应用打不开&#xff0c;缺少dll链接库、闪退等现象可以尝试用下面软件修复。 本资源永久有效。 软件安装基本常识科普&#xff1a; 为什么要安装运行库&#xff1f;运行库默认安装到C盘&…...

解决.DS_Store 在项目一致无法排除,.gitignore里也不生效

.DS_Store 是 macOS 操作系统创建的隐藏文件&#xff0c;通常用于存储目录的属性&#xff0c;比如视图设置、图标位置等。它通常不应包含在代码仓库中&#xff0c;因此需要排除它。你提到即使将其添加到 .gitignore 文件中&#xff0c;仍然无法排除它&#xff0c;可能是由于以下…...

C#里怎么样判断文件是否存在?

C#里怎么样判断文件是否存在? 判断文件是否存在,也是一个常用的功能。 因为文件如果不存,直接去操作,就会抛出异常。 比如要拷贝一个文件到另外一个目录里,如果文件已经存在那个文件夹里,也会抛出异常。 所以提前判断,就可以减少很多不必要的异常抛出,同时程序写得更加…...

汽车免拆诊断案例 | 2012款路虎揽胜运动版柴油车加速无力

故障现象  一辆2012款路虎揽胜运动版车&#xff0c;搭载3.0T柴油发动机&#xff08;型号为306DT&#xff09;&#xff0c;累计行驶里程约为10.2万km。车主进厂反映&#xff0c;车辆行驶中加速无力&#xff0c;且发动机故障灯异常点亮。 故障诊断 接车后试车&#xff0c;发动…...

JAVA基础

JAVA基础 JAVA的变量 变量是什么 内存中存储的&#xff0c;数值可以改变的数据 定义变量 语法 数据类型 变量名 值&#xff1b; 变量的命名&#xff1a; 必须由字母、数字、下划线和$组成&#xff1b;开头不能是数字规范的命名是小驼峰命令&#xff1a;studentName要做…...

ssh无法连接Ubuntu

试了多次ssh都无法连接&#xff0c;明明可以上网 网卡、防火墙、端口都没有问题&#xff0c;就是连接不上 结果是这个版本Ubuntu镜像默认没有安装ssh服务 安装SSH服务&#xff1a;apt-get install openssh-server 开启SSH服务&#xff1a;/etc/init.d/ssh start 就可以连接…...

spi 回环

///tx 极性0 &#xff08;sclk信号线空闲时为低电平&#xff09; /// 相位0 (在sclk信号线第一个跳变沿进行采样) timescale 1ns / 1ps//两个从机 8d01 8d02 module top(input clk ,input rst_n,input [7:0] addr ,input …...

MongoDB 更新集合名

MongoDB 更新集合名 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;它使用集合&#xff08;collections&#xff09;来存储文档&#xff08;documents&#xff09;。集合在 MongoDB 中相当于关系型数据库中的表。在 MongoDB 中&#xff0c;集合名是可以在某些情况下进行更新的…...

常见面试题----深入源码理解MQ长轮询优化机制

引言 在分布式系统中&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;扮演着至关重要的角色。MQ不仅实现了应用间的解耦&#xff0c;还提供了异步消息处理、流量削峰等功能。而在MQ的众多特性中&#xff0c;长轮询&#xff08;Long Polling&#xff09;机制因其…...

Firewall防火墙配置

文章目录 一、firewalld简介二、firewalld特性三、firewalld相关文件及目录四、firewalld配置五、firewalld配置实例一、firewalld简介 firewalld 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 ipv4, ipv6 防火墙设置以及以太网…...

我做了一份斯坦福CS229吴恩达机器学习笔记

吴恩达教授的机器学习课程&#xff0c;可以说是AI领域的一块金字招牌。这门在斯坦福大学开设的课程&#xff0c;历经十余年&#xff0c;依旧是机器学习入门的经典之作。 记得当年&#xff0c;这门课火爆到吴恩达教授不得不将其搬到线上&#xff0c;结果不仅在斯坦福&#xff0c…...

TESSY单元测试工具详解与操作演示:ISO 26262合规性、自定义测试用例、详细测试报告等

在嵌入式系统开发中&#xff0c;安全性和可靠性至关重要&#xff0c;尤其是在汽车、医疗和工业控制等高风险行业。为了确保代码在实际运行中满足安全标准&#xff0c;开发者需要一套完善全面的测试工具&#xff0c;来严格检测代码的安全性和可靠性。 TESSY作为一款已获得IEC 61…...

C++语言之函数对象与算法

在 C 中&#xff0c;函数对象&#xff08;Function Object&#xff09;也叫仿函数&#xff08;Functor&#xff09;&#xff0c;是一个类&#xff0c;这个类重载了()运算符。从概念上讲&#xff0c;它的行为类似于一个函数&#xff0c;可以像调用函数一样来调用这个类的对象。 …...

Fakelocation Server服务器/专业版 Windows11

前言:需要Windows11系统 Fakelocation开源文件系统需求 Windows11 | Fakelocation | 任务一 打开 PowerShell&#xff08;以管理员身份&#xff09;命令安装 Chocolatey Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProto…...

java使用itext生成pdf

一、利用Adobe Acrobat DC软件创建pdf模板 备好Adobe Acrobat DC软件 1.excel/jpg/png文件转pdf文件 右击打开我们要转换的文件 2.然后点击 添加 域 3.可以看到域的名字 4.调整字体大小/对齐方式等 5.保存 二&#xff0c;代码部分 首先 上依赖 <dependency><group…...

【PPTist】添加PPT模版

前言&#xff1a;这篇文章来探索一下如何应用其他的PPT模版&#xff0c;给一个下拉菜单&#xff0c;列出几个项目中内置的模版 PPT模版数据 &#xff08;一&#xff09;增加菜单项 首先在下面这个菜单中增加一个“切换模版”的菜单项&#xff0c;点击之后在弹出框中显示所有的…...

AmazonS3集成minio实现https访问

最近系统全面升级到https&#xff0c;之前AmazonS3大文件分片上传直接使用http://ip:9000访问minio的方式已然行不通&#xff0c;https服务器访问http资源会报Mixed Content混合内容错误。 一般有两种解决方案&#xff0c;一是升级minio服务&#xff0c;配置ssl证书&#xff0c…...

适配屏幕px、rem单位换算, 将 pxToRem 函数设置为一个全局工具如:在 utils.js 文件、SCSS/Mixin 定义

页面的宽度适配&#xff1a; 假设页面的根元素&#xff08;html&#xff09;的字体大小设置为动态值&#xff08;常用 rem 单位适配时的做法&#xff09;&#xff0c; 比如 html { font-size: (屏幕宽度 / 设计稿宽度) }。如果根元素的字体大小为 1rem 屏幕宽度 / 1920px&…...

H.265流媒体播放器EasyPlayer.js播放器提示MSE不支持H.265解码可能的原因

随着人工智能和机器学习技术的应用&#xff0c;流媒体播放器将变得更加智能&#xff0c;能够根据用户行为和偏好提供个性化的内容推荐。总体而言&#xff0c;流媒体播放器的未来发展将更加注重技术创新和用户互动&#xff0c;以适应不断变化的市场需求和技术进步。 提示MSE不支…...

医学图像语义分割:前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室

医学图像语义分割&#xff1a;前列腺肿瘤、颅脑肿瘤、腹部多脏器 MRI、肝脏 CT、3D肝脏、心室 语义分割网络FCN&#xff1a;通过将全连接层替换为卷积层并使用反卷积上采样&#xff0c;实现了第一个端到端的像素级分割网络U-Net&#xff1a;采用对称的U形编解码器结构&#xff…...

16. 指针类型和步长概念问题

1. 项目场景&#xff1a; ➣ Jack Qiao对米粒说&#xff1a;“今天有道友遇到一个问题&#xff0c;举个栗子数组 arr[5] { 0 };道友发现&arr[0] 1与&arr 1打印出来的地址竟然不同。”米粒测试后果然是这样。 2. 问题描述 ☑ 举个栗子&#xff1a;数组 arr[5] { 0…...

【电路笔记】-布尔逻辑AND函数

逻辑AND函数 文章目录 逻辑AND函数1、概述2、逻辑 AND 函数 仅当所有输入均为 true 时&#xff0c;逻辑与函数输出才为 true&#xff0c;否则输出为 false。 1、概述 布尔代数基于逻辑函数&#xff0c;其中每个布尔函数&#xff08;例如逻辑 AND 函数&#xff09;通常具有一个…...

数据结构C语言描述3(图文结合)--双链表、循环链表、约瑟夫环问题

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…...

wend看源码-APISJON

项目地址 腾讯APIJSON官方网站 定义 APIJSON 可以定义为一个面向HTTP 协议的JSON 规范&#xff0c;一个面向数据访问层的ORM 框架。其主要工作流程包括&#xff1a;前端按照既定格式组装 JSON 请求报文&#xff0c;通过 APIJSON-ORM 将这些报文直接转换为 SQL 语句&#xff0c…...

CSS(8):盒子阴影与文字阴影

一&#xff1a;盒子阴影text-shadow属性 1.box-shadow&#xff1a;h-shadow v-shadow blur spread color inset; 默认的是外部阴影outset&#xff0c;不能写在代码上 2.鼠标经过盒子后的阴影 rgba透明度 3.文字阴影 text-shadow:水平偏移 垂直偏移 模糊度 阴影颜色; 注意点…...

Hadoop 系列 MapReduce:Map、Shuffle、Reduce

文章目录 前言MapReduce 基本流程概述MapReduce 三个核心阶段详解Map 阶段工作原理 Shuffle 阶段具体步骤分区&#xff08;Partition&#xff09;排序&#xff08;Sort&#xff09;分组&#xff08;Combine 和 Grouping&#xff09; Reduce 阶段工作原理 MapReduce 应用场景Map…...

web——sqliabs靶场——第十三关——报错注入+布尔盲注

发现是单引号加括号闭合的 尝试联合注入 发现不太行&#xff0c;那尝试报错注入。 测试报错注入 unameadmin) and updatexml(1,0x7e,3) -- &passwdadmin&submitSubmit 爆数据库 unameadmin) and updatexml(1,concat(0x7e,database(),0x7e),3) -- &passwdadmin&a…...

调大Vscode资源管理器字体

对于调整资源管理器字体大小&#xff08;也就是下图红框&#xff09;&#xff0c;查找了网上很多方法。要么介绍的方法是调整了代码字体&#xff0c;要么是调节了终端字体&#xff0c;要么是通过整体放缩实现的调整&#xff0c;总之都不合适。 唯一的调整方法是在几篇CSDN里看到…...