自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++设计模式—— 抽象工厂模式

抽象工厂模式

2023-04-17 15:05:51 297

原创 C++设计模式——工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪一个类Factory Method使得一个类的实例化延迟 (目的:解耦,手段: 虚函数)到子类。——《设计模式》GoFFactory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展 (而非更改)的策略,较好地解决了这种紧耦合关系。

2023-04-17 11:47:30 230

原创 C++设计模式——桥模式

C++设计模式——桥模式

2023-04-17 10:46:57 216

原创 C++设计模式——装饰模式

装饰模式

2023-04-14 14:52:03 151

原创 C++设计模式——观察者模式

观察者模式

2023-04-13 15:04:30 130

原创 MFC多文档分割窗口

MFC多文档结构分割窗口

2023-04-13 09:21:06 1094

原创 C++设计模式——策略模式

定义一系列算法,把他们一个个的封装起来,并且使他们可互相替换(变化)。该模式使得算法可以独立于他用他的客户程序(稳定)而变化(扩展,子类化)。——《设计模式》GoFStrategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便的根据需要在各个算法之间进行切换。Strategy模式提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式。

2023-04-11 21:41:42 77

原创 C++设计模式——模板模式

定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。——《设计模式》GoF延迟到子类:定义一个虚函数重写子类,或者子类重写虚函数,使子类有了灵活性模版模式适用于以下场景:(1)一次性实现算法的不变部分,并将可变的行为留给子类来实现。(2)各子类中公共的行为被提取出来并集中到一个公共的父类中,从而避免代码重复。

2023-04-07 16:15:50 115

原创 C++设计模式——面向对象设计原则

面向对象 设计原则

2023-03-29 17:06:50 70

原创 C++设计模式——什么是设计模式

“每一个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动 ”

2023-03-28 21:41:08 72

原创 【数据结构】八大排序——冒泡排序

八大排序中其他排序直接插入排序希尔排序选择排序文章目录前言冒泡排序原理优化代码实现前言冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,

2022-04-07 23:15:39 486

原创 【数据结构】八大排序——选择排序

八大排序中其他排序直接插入排序希尔排序文章目录前言选择排序原理代码实现前言选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。选择排序原理首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小

2022-04-07 22:37:32 1191

原创 【数据结构】八大排序——希尔排序

八大排序中其他排序直接插入排序文章目录1.发展历史2.基本思想3.代码实现1.发展历史希尔排序按其设计者希尔(Donald Shell)的名字命名,该算法由希尔在 1959 年所发表的论文“A high-speed sorting procedure” 中所描述。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率。但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。1961年,IBM 公司的女程序员 M

2022-04-06 23:17:49 602

原创 【数据结构】八大排序——直接插入排序

文章目录1.直接插入排序原理2.代码实现1.直接插入排序原理直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。直接插入排序:将所有数据分为两个部分,一部分认为是有序的,一部分认为是无序的,每一次从无序部分取一个值放到我们有序部分,直到将无序部分全部取完。

2022-04-06 22:49:55 2473

原创 【数据结构】链队列

文章目录1.链队列2.链式队列的头文件与函数声明3.函数3.1初始化3.2入队3.3出队3.4获取队头元素值3.5判空3.6查找3.7获取有效元素个数3.8销毁4.链队列的源文件与函数实现1.链队列链式队列----用链表实现,链式队列就是一个操作受限的单向链表之前单链表结构体设计的时候,当时发现头节点所需要的成员变量(next域),有效节点里都有,所以我们当时单链表头节点直接借用别人有效数据节点的结构体设计所以我们之前常说头节点的数据域不使用,浪费掉。现在设计链式队列,就会发现头节点需要两个指针

2022-04-05 23:51:49 2477

原创 【数据结构】循环队列

文章目录1.队列2.循环队列3.循环队列头文件与函数声明4.函数4.1初始化4.2入队4.3出队4.4获取队头值4.5判空与判满4.6查找4.7获取队列有效长度4.8清空与销毁5.循环队列源文件与函数实现1.队列**队列:**先进先出的线性表,受到限制的,一端进行入队,一端进行出队。入队的一端叫做队尾,出队的一端叫做队头,队列中没有元素的话,叫做空队。2.循环队列循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位

2022-04-05 23:30:29 3256 1

原创 【数据结构】双向链表

双向链表

2022-04-05 22:45:27 2993

原创 【数据结构】栈 (顺序栈+链栈)

文章目录一、栈的概念二、顺序栈顺序栈的头文件与函数声明1.初始化顺序栈2.获取有效值个数3.判空与判满3.1判空3.2判满4.扩容5.​入栈6.出栈7.获取栈顶元素8.查找9.清空与销毁9.1清空9.2销毁顺序栈源文件与函数实现三、链栈链栈的头文件及函数声明1.初始化2.入栈3.出栈4.判空5.查找6.销毁6.1第一种销毁方法6.2第二种销毁方式链栈的源文件与函数实现一、栈的概念栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后

2022-04-03 14:30:41 231

原创 【数据结构】循环链表

文章目录1.概念2.循环链表的头文件与函数声明3.函数实现3.1 购买节点3.2 初始化函数(重点)3.3 判空函数3.4 获取有效数据个数3.5 头插函数3.6尾插(重点)3.7 按位置插入3.8 头删3.9 尾删(重点)3.10 按位置删除节点3.11 查找3.12 按值删除3.13 销毁3.13.1 销毁13.13.2 销毁24.循环链表的源文件与函数实现1.概念循环链表:和单链表唯一的区别:尾节点保留着头节点的地址循环链表的特点:1. 尾节点可以找到头节点2. 头节点不能找到尾节点3.

2022-04-02 15:02:40 7697 1

原创 【数据结构】带头结点的单链表

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的

2022-04-01 18:30:25 6922

原创 【数据结构】不定长顺序表

不定长顺序表,顾名思义,就是顺序表的长度不定,可以存放任意多个数据。与定长顺序表相比,它可以在顺序表长度不够用时自己进行扩容。那么在设计不定长的顺序表时,存放数据的数组就不能是固定长度的了,这时我们可以考虑用动态数组来代替,进行扩容时就可以动态申请内存,将数据存放到动态数组中。同时加入一个变量 list_size 来存放总的格子数(总容量)。结构如图:结构体声明如下:typedef int ELEM_TYPE;#define MAX_SIZE 10typedef struct Dsql

2022-04-01 15:58:54 568

原创 Linux概述以及文件目录

Linux基础1.为什么要学习Linux对于绝大多数的企业来说,服务器一般安装在linux上现在主流的云计算包括大数据,等等都是默认支持linux系统面试岗位需求2.Linux学习方法C语言可以当做是一门技能,大量的练习,但是Linux绝大部分的内容是需要理解,一般练习也就是基础命令的练习学习方法:理解记忆+看书 (上课理解,下课巩固+扩展),这样子可能学习效率更高一:Linux介绍linux(类unix系统):多用户多任务的操作系统unix系统:贝尔实验室1969年开发,un

2022-03-26 16:18:48 88

原创 const和指针之间的关系

//const和指针的关系 int a = 10, b = 20; int* p1 = &a; int const* p2 = &a; const int* p2 = &a; int* const p3 = &a; const int* const p4 = &a;我们可以知道 p1指向a的地址,通过 p1我们可以改变a的值,也可以将p1指向b的地,这就是我们通常所使用的指针。那么通过const修饰以后,就会有不同的限制。 int c...

2022-02-05 01:08:34 768

原创 C语言指针(二)——指针的应用及运算

1.指针的应用1.1值传递我们可以看到,当程序执行到Swap_a(x,y);时 x,y 变量的值被复制了一份,传到 函数的形参 a, b 中,此时,a 和 b并不是x,y本身,他是在Swap_p函数的栈帧中重新定义的整型变量,只不过是接收了 x和y 的值,我们用第三方变量 c 交换了 a,b 变量的值以后,Swap_p 函数结束后栈帧释放 a 和 b的生命周期结束,然而x,y的值并没有被交换 。1.2 指针传递,指针和函数然而要想在在函数中交换a,b的值,在定义函数的时候,形参用两个整型指针来接

2021-11-17 00:10:43 2221 1

原创 C语言指针(一)——什么是指针及指针的定义

1. 什么是指针计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如int 占用4个字节, char占用1个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。我们将内存中字节的编号称为地址 (Address) 或指针(Pointer) 。地址从0开始依次增加,对于32位环境,程序能够使用的内存为4GB.最小的地址为 0x0000 0000 最大的地址为 0XFFFF FFFFC/C++中 * 号运算

2021-11-13 01:31:28 3383 1

原创 C语言猜数字小游戏及如何生产随机数rand()

实现目标菜单 首先猜数字游戏肯定得要有一个随机数可以重复玩多次猜数字能提示(大了,小了,对了)菜单一般游戏都有个菜单界面,询问玩家游戏或者退出!我们将它封装成一个函数Game_begin提示玩家。void Game_begin(){ printf("****************************\n"); printf("**********猜数字游戏********\n"); printf("****** 1.play ******\n"); pri

2021-10-18 18:23:42 298

原创 标识符,变量,常量

在C语言中,为变量、函数和结构体等起的名称为标识符C语言中标识符命名规则 1)由下划线 " _ " ,英文字母(A-Z,a-z)和数字(0-9)构成,标识符的首字符必须是英文字母或者下划线 '_' ,首字符不能是数字。 2)标识符命名应尽可能做到“见名知意”。 3)不能把C语言的关键字作为用户标识符。 4)标识符长度是由编译系统决定的,一般的限制为8字符(8字符长度限制是C89标准,C99标准容许任意长度)。 5)标识符对大小写敏感,即严格区分大小写。变量是以某标识符为名字,其数值可以改变(

2021-10-15 23:29:35 382 1

原创 冒泡排序(C语言)

**冒泡排序(C语言)**取1-100以内的伪随机数进行冒泡排序#include<stdio.h>#include<stdlib.h>void Input_Ar(int* Ar,int n) { for (int i = 0; i < n; i++) { Ar[i] = rand() % 100 + 1; }}void Print_Ar(int* Ar, int n) { int temp = 0; for (int i = 0; i <

2021-09-02 20:35:40 153 1

原创 图书信息管理系统———C语言课程设计

图书信息包含、书号、书名、作者、出版社、单价等信息能录入图书信息能够列表显示所有图书信息能按照书号、书名查找图书信息能按照书号修改、删除图书信息能够将所有图书保存到文件中,并能从文件中读入数据进行各项操作#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>struct Library{ char name[20].

2021-07-18 23:13:22 476 2

空空如也

空空如也

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

TA关注的人

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