自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 20200220MFC 之CListCtrl(二)

本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧。当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅。主要包括以下十三点内容:基本操作、获取选中行的行号、复选框操作、动态设置选中行的字体颜色、设置选中行的背景颜色、禁止拖动表头、让第一列居中显示、设置行高与字体、虚拟列表技术、点击表头时进行归类、向上与向下移动、动态调整大小问题、避免闪烁问题。1...

2020-02-20 20:24:49 196

原创 20200220 MFC之列表控件技术总结 CListCtrl (一)

列表视图控件的创建MFC为列表视图控件的操作提供了CListCtrl类。如果我们不想在对话框模板中直接拖入List Control来使用列表视图控件,而是希望动态创建它,则要用到CListCtrl类的成员函数Create函数,原型如下:virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWn...

2020-02-20 17:41:17 303

原创 20200212 数据结构和算法之 并行搜索 天下武功,唯快不破

#include <Windows.h>#include <stdio.h>#include <iostream>#include <time.h>#define TEST_SIZE (1024*1024*200)#define NUMBER 20int total = 0;typedef struct _search { i...

2020-02-12 18:27:42 141

原创 20200212 数据结构和算法 多线程的使用

多线程使用的经典例子,线程是并发执行的,即使和进程也是同步进行,所以要线程执行完毕后再执行进程的其他代码,必须增加判断函数WaitForSingleObject(handle, INFINITE),无限等到直到线程执行完毕后程序才往下走。你也可以注释掉那两行代码,看看不增加判断函数多线程运行的效果!#include<Windows.h>#include<stdio.h>...

2020-02-12 17:32:06 140

原创 20200211 数据结构和算法 穷举法之百钱百鸡

穷举法的经典应用,也是老生常谈了,不过里面进行了算法的优化,提高运行速度。#include<stdio.h>#include<stdlib.h>int main() { int nCock = 0; int nHen = 0; int nChicken = 0; int cnt = 0; for (nCock = 0; nCock <= 20; nCo...

2020-02-11 19:23:41 404

原创 20200208 算法之排序算法

不多bb直接上代码,是将数组中最小的数往前面排,形成一个升序数组,而且不用额外申请空间!#include<stdio.h>#include<stdlib.h>void selectAscSort(int arr[], int len);void swap(int* num1, int* num2);int main() { int arr[] = { 156,1...

2020-02-08 21:35:27 84

原创 20200202数据结构和算法 之用哈希表实现DNA检测

可以使用哈希表来存储色盲基因库数据,通过哈希函数把 4 位色盲基因映射到哈希表中,大大提高检索的效率#include<Windows.h>#include<iostream>#include<stdio.h>using namespace std;#define isEqual(a, b) (0==strcmp((const char*)a,(con...

2020-02-02 21:17:07 238

原创 20200202数据结构和算法之 哈希表

哈希表!是为了根据key值和哈希函数(一般是key值对tabsize取模),快速找到对应的数据而生,其数据结构组成如下:#define DEFAULT_SIZE 128typedef struct _listNode { struct _listNode* next; int key; void* data;}listNode;typedef listNode* list;typ...

2020-02-02 12:20:20 94

原创 20200201数据结构和算法之 红黑树(平衡的二叉搜索树)

红黑树也是二叉搜索树,引入红黑树是为了解决实际工程问题中出现二叉搜索树极端情况,造成搜索的效率大大降低。如图所示这样的二叉搜索树,其搜索效率和数组差不多,在数据量大时,会大大降低搜索的效率。为了解决这个问题,引入了红黑树,其性质有:1、结点是红色或者黑色;2、根结点是黑色;3、所有的叶子结点都是黑色结点(NULL);4、每个红色结点必须有两个黑色子结点(也就是说不能有两个连续的红色结点)...

2020-02-01 17:44:34 116

原创 20200201数据结构和算法之哈夫曼编码的实现

哈夫曼编码是为了实现编码的压缩,提高传输的效率。在编码端进行压缩,解码端进行相应的解码,得到传输的真实内容。编码时,先统计字符出现的频率,按照从低到高的顺序进行统计,出现频率越高的编码越简单,从而对数据进行压缩。实现哈夫曼编码,用到了优先队列,优先级(权重)低的先出列,两两出列后进行构建新的结点进行入队,循环遍历,直到队列只剩下一个数据,此数据就是哈夫曼编码的最大堆(属于完全二叉树)。其数据结...

2020-02-01 17:14:57 306

原创 20200127 庚子年正月初三 数据结构和算法之 用双向链表实现栈

先定义双向链表的结构体,这个链表具有通用性,可以实现“共享”链表的功能。typedef int datatype;typedef struct _dblink{ _dblink* pre; _dblink* next;}dblink,dbNode;typedef struct _linkStack { datatype data; int size; dblink dbNode;...

2020-01-27 12:06:21 190

原创 20200126 庚子年正月初二 数据结构和算法之 顺序栈的实现

顺序栈的结构有两种实现方式,第一种方式为:typedef struct _stack { int top; datatype* base;}sqlStack;这种方式只需要申请一个指针base,top用整数表示,简洁明了,第二种方式采用了两个指针typedef struct _stack { datatype* top; datatype* base;}...

2020-01-26 21:15:57 163

原创 20200126庚子年正月初二 数据结构和算法之利用堆对数组进行快速排序

利用堆对数组进行快速排序,以对数组进行升序排序为例,用最大堆可以实现。实现的方法如图所示,一图解千语。先将最大堆的顶结点和尾结点交换,在堆中排除掉尾结点,接着对新的堆进行重新构建一个最大堆。依次类推,直到最后堆的元素个数为0。在前期代码实现的基础上进行了优化,直接将要排序的数组传进去,不用另外申请额外的空间。完整的代码实现如下:/* 利用堆对数组进行快速排序,以对数组进行升序排序为例,用...

2020-01-26 17:46:07 248

原创 20200126庚子年正月初二 数据结构和算法之用堆实现优先队列

以前都用单链表实现优先队列,这次用堆实现优先队列。结构体组成如下typedef struct _task { int priority; //其他属性省略}task;typedef task datatype;typedef struct _priorityQueue{ datatype* arr; int size;//当前已存储的元素个数 int capacity;//最大...

2020-01-26 17:12:19 188

原创 20200124 之农历新春佳节的除夕,看到此博客者鼠年吉祥如意,发大财! 数据结构和算法的构建最大堆

堆是最有个性的树,他是用数组表示的树。如下图所示: i 的子节点: 左是 2i+1,右是 2i+2i 的父节点: (i-1)/2最大堆的数据结构组成如下:typedef struct _heap{ int* arr; int size;//现有的元素个数 int capacity;//堆的最大容量}heap;当构建一个堆的对象heap后,其最后一个子结点为(h...

2020-01-24 23:22:14 85

原创 20200121 数据结构和算法之 优先队列

今天学到优先队列这块 ,优先队列的入队和普通的链式队列一样,就是出列时优先级高的最先出列,如果是优先级一样的,那么排在前面的先出队。发现这个现象很是奇怪:链式队列,当前结点的next是指向下一个结点的指针,将地址打印出来确实如此。但是取当前结点指针的地址和next指针的地址时,发现当前指针的地址都是一样的,而next指针的地址是变化的。这种现象直接导致循环遍历找优先级最高的结点时,二级指针只能...

2020-01-21 11:24:15 116

原创 20200120 数据结构和算法之 数组循环队列的实现

数组循环队列针对数据量不大的情况下使用,可以快速地实现元素的入队和出队。入队和出队遵循先进先出(FIFO)的原则。结构体组成如下:typedef int datatype;typedef struct _loopQueue { datatype* data; int front; int rear;}loopQueue;其中基本的操作图如下:循环队列入队,队尾循环后移 lq-&g...

2020-01-20 12:29:58 262

原创 20200119数据结构和算法之 线程池中的任务队列

任务队列,由相应的函数进行相关的功能,其结构组成如下:typedef struct _linlList { int id; void (*handler)();//函数指针 _linlList* next;}linkList,linkNode;typedef struct _linkQueue { int length; linkList* front; linkList* re...

2020-01-19 11:36:29 240

原创 20200117 数据结构和算法之 链式队列的实现

前面用顺序存储的方式实现了队列,顺序存储的方式存在着缺点,在出队时要移动大量的元素,在大数据量时需要消耗大量的资源。针对此采用链式存储的方式实现队列。其结构组成如下,需要重点说明的是增加了length,其表示结点的个数,一般书上没有这个元素,Martin老师加上的,确实好用!typedef struct _linlList { datatype data; _linlList* next;...

2020-01-17 21:52:47 1759

原创 20200117 数据结构和算法之顺序存储的队列

顺序存储的队列遵循先入先出的原则,其结构构成如下:typedef struct _sqlQueue { datatype* data; int front; int rear;}sqlQueue;其中front为头指针,指向起始位置,rear为尾指针,指向最后一个位置,rear-font即为元素的个数。图示如下:初始化函数为bool initQueue(sqlQueue*& ...

2020-01-17 18:33:17 285

原创 20200117 数据结构和算法之双向链表共享的实现!

双向链表的结构体如下:typedef struct _dbLinkList{ datetype data; _dbLinkList* pre; _dbLinkList* next;}dbLinkList,dbLinkNode;其中的数据类型datatype根据实际情况,或者是普通的数据类型或者是自定义的结构体类型,这样datatpye 的不同,每种数据类型都要写相应的创、删、查、改...

2020-01-17 10:37:12 136

原创 20201016数据结构和算法之 双向链表

** 双向链表的结构如下:**typedef struct _dbLinkList{ type data; _dbLinkList* pre; _dbLinkList* next; }dbLinkList,dbLinkNode;**双向链表的特性:**由结构可以看出,双向链表继承了单向链表的特性同时,其构成相对于单向链表,多了一个指向前一个元素的pre指针,具有了逆向追溯性。**函...

2020-01-16 19:53:49 146

原创 20200115数据结构和算法之循环链表,解决joesph问题!

joseph问题需求:10个小朋友围成一圈,从1开始数数,数到9的小朋友出圈,再从1开始,直到所有的小朋友出列。问第5次出圈的小朋友编号是多少?最后一个出圈的的小朋友编号是多少?实现:用循环链表来解决接口函数都可以直接调用,方便得很,而且joesph问题数的数也可以随便更改。辛苦了一晚上,画了N多图,终于用自己的实现了 ,凯森ing!#include<Windows.h>...

2020-01-15 21:17:26 165

原创 20200115 数据结构和算法之单向链表

单向链表的引入解决了元素删除和增加时顺序表需要移动大量元素的问题,其结构如下:typedef struct _linkList{elementType data;_linkList* next;}linkNode,linkLIst;单链表的接口函数如下,包括初始化、尾插法、前插法、指定位置插入、查询元素、删除结点、获取指定位置结点以及链表的销毁:bool initLinkList(li...

2020-01-15 11:33:43 101

原创 20200113数据结构之顺序列表

顺序表的结构为typedef struct{eleType element;//基地址int length;//顺序表的长度int size;//顺序表的大小}sqllist;其特点是在内存上分配一块连续的空间,可通过下标快速访问对应的元素,缺点是删除和插入要移动大量的元素。接口实现如下:#include<Windows.h>#include<iostream&...

2020-01-14 19:37:31 160

原创 20200112 好好体会下,什么叫做函数的栈帧调用,什么是局部变量的生命周期

#include<Windows.h>#include <iostream>using namespace std;char* test() { //char p[1024] = {0};//函数调用完毕后就释放掉内存 char* p = new char[1024]; sprintf_s(p,1024,"你好%d", 2020); return p;}...

2020-01-12 21:39:46 119

原创 20200105 控制台环境下,文件的写入和错误时清空缓存、错误标志

#include <Windows.h>#include<iostream>#include <fstream>#include <string>using namespace std;int main() { string name; int age; char c; ofstream file; file.open("user...

2020-01-05 19:56:31 89

原创 20201205 快速定位,位图巅峰算法,你值得拥有!

//位图算法/*需求:有一个整型数组,最大的40亿,最小的0,要求快速找到数组中是否存在某个数值 实现:位图算法 在堆空间中申请一块最大值的连续空间,将数组中的数值装载进去,装载的方法是,此数存在,则将相应 的位置1。装载完毕后,检测输入的数据是否在连续空间对应的位是否为1,如为1就存在,否则不存在。*/#include <iostream>...

2020-01-05 11:08:12 182

原创 20191230 C++组合、聚合的用法

1、需求:构建一个计算机类,一台计算机,由CPU芯片,硬盘,内存等组成。CPU芯片也使用类来表示。-----根据分析。CPU是计算机的一部分,属于组合用法。2、需求给计算机配一台音响。–根据分析,音响和计算机是聚合关系。//cpu.h#pragma onceclass cpu{public: cpu(const char* brand="intel",const char*...

2019-12-30 10:11:31 174

原创 20191228 C++面向对象的作业

需求:创建一个类, 用来表示“玩具”文具, 有以下数据:名称,价格,产地。在使用中,需要获取它的名称, 价格, 产地。注意:根据自己当前的优惠情况,有一个对外的价格。定义的toy.h类的头文件//toy.h#pragma once#include<Windows.h>#include<iostream>#include<string>u...

2019-12-28 10:40:34 207

原创 20191225C++对象之构造函数,包括带参数的构造函数、拷贝函数、赋值构造函数

#include <Windows.h>#include<iostream>#include<string>#define ADDR_LEN 128using namespace std;class Human { public: Human();//默认的构造函数 Human(string name, int salary, int ag...

2019-12-25 18:37:49 288

原创 20191223同时检测多个按键和按键平滑处理

getch() 函数,用于返回用户输入的字符。当连续按键时,该函数返回第一个字符和第二个字符之间,默认有 0.5 秒的延时,并且之后的连续字符,默认是每秒钟 15 次输入。这两个数值可以在控制面板中设置。如果需要平滑的按键输入,或者同时按下多个按键,就不能用 getch() 了,需要使用另一个 Windows API 函数:GetAsyncKeyState()。该函数原型如下:SHORT Ge...

2019-12-23 16:59:26 1040

原创 20191216连接两个字符串

/*编写一个程序,连接两个字符串字面常量,将结果保存在一个动态分配的 char 数组中。重写这个程序,连接两个标准 string 对象。*/#include<Windows.h>#include<iostream>#include<stdio.h>#include <string>#define N 1024using namesp...

2019-12-16 17:37:04 221

原创 20191216从标准输入流中输入三个字符串,每输入一段字符串动态分配内存,实时存储在动态内存中

/*编写一个程序,使用 cin 从标准输入输入 3 段文字,保存到一段动态分配的 内存中, 每一段文字输入后,必须要即时保存到动态内存中。*/#include <Windows.h>#include<iostream>#include<string>#include<stdio.h>using namespace std;int m...

2019-12-16 17:06:17 393

原创 20191216动态分配数组,而且用一维数组来表示二维数组

/*首先,根据输入的二维数组的行数和列数,动态地为该数 组分配存储空间;其次,向二维数组中 输入数据;最后输出该数组中的所有元 素。请完善下面的程序。*/#include<iostream>#include <stdlib.h>using namespace std; int main(void){ int *p; int row, col...

2019-12-16 12:46:59 269

原创 20191214将输入的字符串进行逆转输出

/*实现含有中文字符串的逆转,如“我是小萌新”转换成“新萌小是我”**首先要搞明白一件事,就是一个中文字占两个字节*/#include<Windows.h>#include<iostream>using namespace std;int main() { char input[256]; char* p = input; gets_s(input,...

2019-12-14 11:50:52 185

原创 20191213 指针的引用02

使用指针的引用,将函数内部的数据带到函数外部来,good idea!#include <Windows.h>#include <iostream>using namespace std;int swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; return 0;}void boy_h...

2019-12-13 21:01:49 58

原创 20191213引用

#include<Windows.h>#include <iostream>using namespace std;//引用作为函数的形参时,不需要进行初始化int swap(int& x, int& y) { int temp = x; x = y; y = temp; return 0;}int main() { int a = 1...

2019-12-13 20:42:27 63

原创 20191213 函数指针的使用方法02

#include<Windows.h>#include<iostream>using namespace std;int compare_int( void* a, void* b) { int* a1 = (int*)a; int* b1 = (int*)b; //printf_s("a的地址:0x%p,b的地址:0x%p\n",a, b); return...

2019-12-13 20:24:06 164

原创 20191213 函数指针的使用01

使用函数指针对数组进行排序,好用qsort#include<Windows.h>#include<iostream>using namespace std;int compare_int( void* a, void* b) { int* a1 = (int*)a; int* b1 = (int*)b; //printf_s("a的地址:0x%p,b的地址:...

2019-12-13 17:46:49 133

空空如也

空空如也

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

TA关注的人

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