随笔分类 - C/C++
C++相关
摘要:操作系统内核作业调度是优先队列的一个应用实例,它根据优先级的高低而不是先到先服务的方 式来进行调度; 如果最小键值元素拥有最高的优先级,那么这种优先队列叫作升序优先队列(即总是先删除最小 的元素),类似的,如果最大键值元素拥有最高的优先级,那么这种优先队列叫作降序优先队列 (即总是先删除最大的元素)
阅读全文
摘要:1. 建立堆算法实现 堆数据结构的定义 1 #define DEFAULT_CAPCITY 128 2 3 typedef struct _Heap 4 { 5 int *arr; //存储堆元素的数组 6 int size; //当前已存储的元素个数 7 int capacity; //当前存储的
阅读全文
摘要:1. 堆的特点: 1.1. 每个节点最多可以有两个节点 1.2. 根节点的键值是所有堆节点键值中最大者(如果是最小堆则相反),且每个节点的值都比其两个或一个子节点的值大(如果是最小堆则相反) 1.3. 除了根节点没有兄弟节点,最后一个左子节点可以没有兄弟节点,其他节点必须有兄弟节点 2. 堆的结构:
阅读全文
摘要:Linux 内核“共享”双向链表在 linux 内核中,有大量的数据结构需要用到双向链表,例如进程、文件、模块、页面等。若采用双向链表的传统实现方式,需要为这些数据结构维护各自的链表,并且要为每个链表设计插入、删除等操作函数。因为用来维持链表的 next 和 prev 指针指向对应类型的对象,所以一
阅读全文
摘要:在高并发 HTTP 反向代理服务器 Nginx 中,存在着一个跟性能息息相关的模块 - 文件缓存。 经常访问到的文件会被 nginx 从磁盘缓存到内存,这样可以极大的提高 Nginx 的并发能力,不过因为内存的限制,当缓存的文件数达到一定程度的时候就会采取淘汰机制,优先淘汰进入时间比较久或是最近访问
阅读全文
摘要:英雄联盟游戏里面防御塔都有一个自动攻击功能,小兵排着队进入防御塔的攻击范围,防御塔先攻击靠得最近的小兵,这时候大炮车的优先级更高(因为系统判定大炮车对于防御塔的威胁更大),所以防御塔会优先攻击大炮车。而当大炮车阵亡,剩下的全部都是普通小兵,这时候离得近的优先级越高,防御塔优先攻击距离更近的小兵。 优
阅读全文
摘要:在队列的顺序存储中,采用出队方式 2, 删除 front 所指的元素,然后加 1 并返回被删元素。这样可以避免元素移动,但是也带来了一个新的问题“假溢出”。 能否利用前面的空间继续存储入队呢?采用循环队列 循环队列入队, 队尾循环后移: SQ->rear =(SQ->rear+1)%Maxsize;
阅读全文
摘要:线程池-由一个任务队列和一组处理队列的线程组成。一旦工作进程需要处理某个可能“阻塞”的操作,不用自己操作,将其作为一个任务放到线程池的队列,接着会被某个空闲线程提取处理。 1 #include <stdio.h> 2 #include <assert.h> 3 #include <Windows.h
阅读全文
摘要:队列的链式存储结构,其实就是线性表的单链表,只不过它只是尾进头出而已,我们把它简称为链队列。为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端节点。 1 typedef int DataType; //队列中元素类型 2 typedef struct _QNode //结点结构
阅读全文
摘要:队列 (Queue)概念 它是一种运算受限的线性表,先进先出(FIFO First In First Out),它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。 采用数组来保存队列的元素,设立一个队首指针 front ,一个队尾指针 rear,分别指向队首和队尾元
阅读全文
摘要:文件1: webServer.h 1 //#pragma once 2 #ifndef _WEB_SERVER_H_ 3 #define _WEB_SERVER_H_ 4 5 #include <time.h> 6 7 #define MAX_SIZE 1000 8 9 typedef struct
阅读全文
摘要:单链表中每个结点除了存储自身数据之后,还存储了下一个结点的地址,因此可以轻松访问下一个结点,以及后面的后继结点,但是如果想访问前面的结点就不行了,再也回不去了。例如删除结点p 时,要先找到它的前一个结点q,然后才能删掉p 结点,单向链表只能往后走,不能向前走。如果需要向前走,怎么办呢?可以在单链表的
阅读全文
摘要:Joseph 问题: 如果有10 个人,按编号顺序1,2,。。。,10 顺时针方向围成一圈。从1 号开始顺时针方向1,2,。。。,9 报数,凡报数9 者出列(显然,第一个出圈为编号9 者)。 最后一个出圈者的编号是多少? 第5 个出圈者的编号是多少?z . 代码实现 1 #include<iostr
阅读全文
摘要:1. 单链表的原理 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不必须相邻,那么怎么表示逻辑上的相邻关系呢?可以给每个元素附加一个指针域,指向下一个元素的存储位置。如图所示: 从图中可以看出,每个结点包含两个域:数据域和指针域,指针域存储下一个结点的地址,因此指针指向的类型也是结
阅读全文
摘要:1. 顺序表的原理以及实现: 1.1 什么是顺序表: 顺序表是在计算机内存中以数组的形式保存的线性表,顺序表是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以快速定位第几个元素,中间不允许有空值,插入、删除时需要移动大量元素。 1.2 什么是线性表: 线性表是从逻辑结构的角度
阅读全文
摘要:EasyX Library for C++ (Ver:20190415(beta)) http://www.easyx.cn EasyX.h 1 #pragma once 2 3 #ifndef WINVER 4 #define WINVER 0x0400 // Specifies that the
阅读全文
摘要:map.find(key); //查找键key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回map.end(); map.count(key); //返回容器中键值为key的对组个数。对map来说,要么是0,要么是1;对multimap来说,值>=0。 map.lower_bound(ke
阅读全文
摘要:Map & multimap 的删除 map.clear(); //删除所有元素 map.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。 map.erase(beg,end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。 map.erase(
阅读全文
摘要:1. Map & multimap 的大小 map.size(); //返回容器中元素的数目 map.empty();//判断容器是否为空, 容器中有内容将会返回 false 代码示例: 1 #include <iostream> 2 #include <map> 3 4 using namespa
阅读全文


浙公网安备 33010602011771号