自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 函子: 基于下面提供的代码,完成后续的四个练习

// support.jsclass Container { static of(value) { return new Container(value ) } constructor (value ) { this._value = value } map(fn) { return Container.of(fn(this._value)) }}class Maybe { static of(x) { return new Maybe(x)

2022-02-14 17:24:42 250

原创 函数组合: 基于以下代码完成下面的四个练习

const fp = require('lodash/fp')// 数据// horsepower 马力,dollar_ value 价格,in_ stock库存const cars =[ { name: 'rrari FF', horsepower: 660, dollar_value: 700000, in_stock: true } , { name: 'Spyker C12 Zagato' , horsepower: 650, dollar_value: 648000, in

2022-02-14 16:47:19 1039

原创 Promise链式调用: 将下面异步代码使用Promise的方式改进

setTimeout ( function ( ) { var a = 'hello' setTimeout ( function () { var b = 'lagou' setTimeout ( function () { var C = 'I love U' console.log(a + b + c) },10) },10)},10)

2022-02-14 15:18:17 242 2

原创 谈谈你是如何理解 JS 异步编程的?Event Loop、消息队列都是做什么的?什么是宏任务?什么是微任务?

谈谈你是如何理解 JS 异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务?

2022-02-11 16:00:06 439

原创 二叉树基本操作(一)

目录一、二叉树的概念二、二叉树的分类满二叉树 && 完全二叉树三、二叉树的基本操作1、二叉树的创建2、二叉树的销毁3、求二叉树的高度 4、求二叉树叶子结点的个数5、求二叉树结点的个数6、求二叉树第 K 层结点的个数 7、判断一个节点是否在一棵二叉树中 注:完整代码请至 Github 查看:https://github.com/...

2019-08-20 12:48:56 316

原创 栈和队列习题二

目录一、实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值)的时间复杂度为O(1)二、元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为 (4,5,3,2,1)三、一个数组实现两个栈(共享栈)注:以上三个题的完整代码至 GitHub 查看:https://github.com/lxt-cn/DSCode/tree/master/Qu...

2019-08-09 11:46:37 201

原创 栈的应用(迷宫问题)

一、迷宫问题解决思路回溯法: 顾名思义,就是可以向回退的方法。适合于一个包含多个节点,每个节点有若干个搜索分支的问题,把原问题分解为若干个子问题求解的算法; 具体思路是:当搜索到某个节点发现无法再继续搜索下去时,就让搜索过程回溯(回退)到该节点的前一个节点,继续搜索该节点外的其他尚未搜索的分支;如果发现该节点无法再继续搜索下去时,就让搜索过程回溯到这个节...

2019-08-05 11:21:46 227

原创 栈和队列习题

目录一、两个栈实现一个队列二、两个队列实现一个栈一、两个栈实现一个队列 分析:栈是后进先出的,队列是先进先出的。如果要用两个栈实现一个队列,主要的两个接口就是实现入队和出队,所以我们使两个栈始终保持一个为入队栈,一个为出队栈,具体在下面分析。 1、定义typedef struct QueueByTwoStack{ Stack s1; /...

2019-07-17 10:33:47 102

原创 队列的基本实现(顺序队列、循环队列)

目录一、队列的简介二、顺序队列三、循环队列一、队列的简介 队列:一种只允许在一端进行插入操作,在另一端进行删除操作的特殊线性表。(先进先出) 如图所示为队列的示意图: 队列的分类: 1、顺序队列:创建顺序队列需申请一块连续的内存空...

2019-07-17 10:33:07 473

原创 栈的基本实现

目录一、栈的简介二、顺序栈三、链式栈一、栈的简介 栈:是一种限定仅在表尾进行插入/删除操作的线性表。表尾称为栈顶,表头称为栈底。不包含元素的空表称为空栈。 如图所示为栈的示意图: 栈的分类: 1、顺序栈:顺序栈和顺序...

2019-05-16 15:21:47 686 2

原创 《剑指 offer》:数组中重复的数字

目录 题目一:找出数组中重复的数字 题目二:不修改数组找到重复的数字。题目一:找出数组中重复的数字 在一个长度为 n 的数组里的所有数字都在 0 ~ n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 例如:如果输入长度为 7 的数组{2,3,1,0,...

2019-05-10 23:59:26 154

原创 复杂链表的复制

一个链表的每个结点,有一个指向next指针指向下一个结点,还有一个random指针指向这个链表中的一个随机结点或者NULL,现在要求实现复制这个链表,返回复制后的新链表。 逻辑:通过图片来看,注意线条颜色; 代码如下://结点的定义typedef struct ComplexNode{...

2019-05-02 23:10:03 88

原创 链表面试题

在此之前,需说明的是,以下链表题都是单链表,且结点的定义为typedef int DataType;typedef struct Node{ DataType data; struct Node* next;}Node , List, *pNode, *pList;目录1、比较顺序表和链表的优缺点, 说说它们分别再什么场景下使用?2、从尾到头打印...

2019-05-01 16:52:09 1110

原创 带头双向循环链表

首先,我们来看一下带头双向循环链表的结构: 目录带头双向循环链表结点的定义:相关操作接口:1、初始化 && 获取一个结点2、销毁链表3、尾插4、头插5、指定元素查找6、任意位置插入7、 尾删8、头删9、任意位置删除10、打印链表附上完整代码:带头双向循环链表结点的...

2019-05-01 14:06:42 212

原创 C语言实现单链表(不带头结点)

在之前的博客中,我写了有关线性表的顺序存储结构的顺序表,顺序表的特点是逻辑关系上,相邻的两个元素在物理位置上也相邻,因此可以随机存取表中任一元素,但是,它在进行插入删除操作时,需要移动大量的数据元素,故而在下面的内容中,讨论的是线性表的另一种存储结构(链式存储结构)中的不带头节点的单链表,由于链表不要求逻辑上相邻的元素在物理位置上也相邻,所以它没有顺序表的弱点,但是也失去了它的优点。...

2019-04-29 12:33:28 1479

原创 C语言实现静态顺序表

首先,我们需要知道的是,什么是线性表?线性表就是 n (n>=0) 个数据元素组成的一个有序序列,可以在任意位置上进行插入和删除操作的线性数据结构。线性表从数据在物理内存存储形式上分为:顺序表和链表。 在下面,我们只讨论顺序表。 顺序表的定义:用一段地址连续的存储单元依此存储数据元素的线性结构。 通过顺序表的定义,我们知道地址...

2019-04-25 13:57:41 795

原创 【C语言】输入 / 输出函数总结

目录一、错误报告函数二、终止执行三、I/O概念四、打开流 / 关闭流五、字符I/O 1、getchar / putchar 2、getc / putc 3、fgetc / fputc六、未格式化的行 I/O 1、gets / puts 2、fgets / fputs七、格式化I/O 1、scanf ...

2019-04-22 12:11:38 438

原创 静态通讯录【C语言】

使用结构体类型实现一个静态通讯录,可以存储1000个人的信息,包括姓名,性别,年龄,电话号码,地址。 主要实现功能有:1、添加联系人信息 2、删除指定联系人信息 3、查找指定联系人 4、修改指定联系人信息 5、显示所有联系人 6、清空所有联系人 7、以名字排序所有联系人 需要提前说的是,一个人的地址,电话号码一般不固定,性别的话,...

2019-04-09 08:15:32 420

原创 【C语言】自定义类型:结构体、枚举、联合

目录结构体结构体的声明结构的成员结构的自引用结构的不完整声明结构体变量的定义和初始化结构体内存对齐位段枚举联合联合大小的计算结构体 至今为止,我们已经了解了基本类型(或者简单类型)的变量(如整型、实型、字符型变量等),还有一种构造类型的数据(数组),数组中的各元素属于同一种类型,下面,我们要了解的是将不同类型的数据组合成一个有机的整体—...

2019-04-06 22:42:22 330

原创 使用回调函数,模拟实现qsort(采用冒泡的方式)

首先,我们说一下什么是回调函数? 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另一方调用的,用于对该事件或条件进行响应。 如果你还不了解函数指针的相关内容,可先选择看我的上一篇博客,点击下方进入:...

2019-04-01 17:25:12 125

原创 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针

首先,我们都知道,地址形象化地称为“指针”。即通过它能找到以它为地址的内存单元。那么在下面的讲述中,我主要讲述的有指针数组 、数组指针、函数指针、函数指针数组和指向函数指针数组的指针。指针数组 定义:指针数组是数组,是一个存放指针的数组。 例如:int *p[10]; //由于[]的优先级比*的高,p先与[]相结合,说明 p 是一个数组,...

2019-03-30 20:18:31 196

原创 模拟实现C函数库中的常用函数

在接下来的描述中,一共会模拟实现 7 个库函数,分别是: 1、strlen 2、strcpy 3、strcat 4、strstr 5、strcmp 6、memcpy 7、memmove 在模拟实现之前,我都会先把函数在MSDN中的定义截取下来并适时解释。常用函数:1、模拟实现strlen 下面我们将用三...

2019-03-27 16:56:09 237

原创 可变参数列表解析

解析可变参数列表之前,我们需要了解什么是可变参数及它的作用与实质。 可变参数:指某一个函数被调用的时候,并不知道具体传递进来的参数类型和参数的数目。 作用:通过将函数实现为可变参数的形式,使得函数可以接受一个以上不固定数目的参数。 实质:可变参数列表实际上是宏的使用,实质是栈帧结构的运用。 在库函数中也存在一些可变参数的函数,比如 printf() ,我们来看一下它的定...

2019-03-12 19:37:22 130

原创 栈帧的创建和销毁

   首先,我们先了解一下,什么是函数的调用过程?   函数的调用过程,顾名思义,即每一次函数调用都是一个过程。这个过程要为函数开辟栈空间,用于本次函数的调用中临时变量的保存,现场保护。这块栈空间称为函数栈帧。它存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等   从而,得到我们本篇博客的重点:栈帧栈帧的创建和销毁    在接下来的描述中,我们将在VC6.0编译器32...

2018-12-29 16:52:48 556

原创 扫雷小游戏

扫雷游戏思路       首先,在写扫雷小游戏之前,我们要先了解她的游戏规则。扫雷顾名思义就是找到所有非地雷的格子,只有把所有的非地雷的各自全部找出来游戏才会胜利,在过程中踩到雷就会游戏失败。游戏是由方格组成的区域,电脑版的中是使用鼠标标记所要查看的格子,在下面的程序中,我们使用坐标实现选择,当我们选择之后,方格中会出现一个数字,这个数字代表这个方格周围隐藏几颗雷。     接下来,我们先...

2018-10-23 17:14:51 283

原创 数组(C语言)

数组:一组具有相同类型数据的集合。1、 一维数组的创建一维数组的定义方式:type_t  arr_name[ count ];                                   //type_t 数组元素的类型                                  //arr_name 数组名                            ...

2018-10-14 15:30:16 344

原创 操作符(C语言)

操作符      在C语言中,操作符分为算法操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号操作符、逗号表达式、下标引用、函数调用和结构成员。1、算法操作符                      <1>、除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。      <2>、对于 / 操作符,如果两...

2018-09-02 22:08:43 103

原创 交换两个数的值的四种方法

   交换两个数的值时,大致分为两种思路,建立临时变量和不建立临时变量,这里我们按照是否建立临时变量来写。一、建立临时变量    <1>、一般方法              思路:建立临时变量 tmp ,通过 tmp = a; a = b; b = tmp; 来实现。              图解:(以 a = 1; b = 2 为例)              ...

2018-08-19 10:33:10 7851

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除