C
文章平均质量分 70
z向前
这个作者很懒,什么都没留下…
展开
-
C++智能指针总结
为什么要有智能指针?因为普通的指针存在以下几个问题:资源泄露野指针未初始化多个指针指向同一块内存,某个指针将内存释放,别的指针不知道异常安全问题如果在 malloc和free 或者 new和delete 之间如果存在抛异常,那么也会导致内存泄漏。资源泄漏示例代码:int main(){ int *p = new int; *p = 1; p = new int; // 未释放之前申请的资源,导致内存泄漏 delete p; return 0;}野指针示例代原创 2021-08-09 20:04:52 · 937 阅读 · 1 评论 -
直方图的水量 力扣面试题 17.21.
记录力扣每日一题题目链接题目描述:给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路:左右视图,同一位置取较小值, 便是当前位置能够储水的最大高度, 最后在减去构成容器的直方图的高度,就是最终储水的结果int .原创 2021-04-02 11:01:31 · 1836 阅读 · 3 评论 -
总结学习二叉树4-二叉树的遍历
二叉树链式结构的遍历遍历(Traversal) 是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。树结点结构代码:template<class T>struct BTNode { BTNode(T data = T()) : _data(data), _lchild(nullptr), _rchild(nullptr) {} BTNode<原创 2021-03-21 16:49:10 · 1264 阅读 · 5 评论 -
总结学习二叉树3-二叉树基本概念
上一篇:树的三种表示方法二叉树特点:二叉树是树的特殊一种 (树的概念参考)每个节点最多有两颗子树,结点的度最大为2.左子树和右子树是有顺序的,次序不能颠倒.即使某个结点只有一个子树,也要区分左右子树.特殊的二叉树及特点:斜树:所有结点都只有左子树(左斜树)或右结点(右斜树)满二叉树:所有分支节点都存在左子树和右子树,并且所有的叶子结点都在同一层上.叶子只能出现在最下一层.非叶子结点度一定是2.在同样深度的二叉树中,满二叉树的结点个数最多,叶子树最多.原创 2021-03-13 12:05:45 · 238 阅读 · 0 评论 -
总结学习二叉树2-树的三种表示方法
树的表示树有很多表示方式,如:双亲表示法 取一块连续的内存空间,在存储每个结点的同时,各自都附加一个记录其父结点位置的变量。需要在树结构中频繁地查找某结点的父结点时,使用双亲表示法比较合适.代码表示:#define nodeNum 50typedef struct PNode{ int _data; //树中结点的数据类型 int _parent; //结点的父结点在数组中的位置下标}PNode;typedef struct { PNode _node[原创 2021-03-13 10:50:40 · 2097 阅读 · 0 评论 -
总结学习二叉树1-树的基本概念
二叉树的相关知识之前比较零碎的学习了一遍, 时间久了,对很多细节遗忘比较严重, 所以,详细总结一遍.1. 树1.1 树的概念 结点 数据结构的基础, 是构成复制数据结构的基本单位. 树是一种非线性的数据结构,它是由n(n>0)个有限节点组成的具有层次结构的数据集合.叫做树是因为看起来像一颗倒挂的树(根朝上,叶朝下).当结点个数n 为0时, 称为 空(NULL)树.任意一颗非空树具有以下特点:1.2....原创 2021-03-13 10:24:45 · 182 阅读 · 0 评论 -
最长公共子序列
题目: 我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列。子串中的字符不一定在原字符串中连续。例如字符串“abcfbc”和“abfcab”,其中“abc”同时出现在两个字符串中,因此“abc”是它们的公共子序列。此外,“ab”、“af”等都是它们的字串。现在给你两个任意字符串(不包含空格),请帮忙计算它们的最长公共子序列的长度。示例1:输入 :abcfbc abfcabprogramming contestabcd mnp输出:420动态规划思想建原创 2021-03-11 22:49:59 · 123 阅读 · 0 评论 -
字符串计数
求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。输入描述:每组数据包涵s1(长度小于100),s2(长度小于100),len1(小于100000),len2(大于len1,小于100000)输出描述:输出答案。示例1输入:ab ce 1 2输出56// 字符串计数#include<iostream>#include<string>#include<vector>#include<algo原创 2021-03-11 22:09:46 · 123 阅读 · 0 评论 -
操作数及寻址方式
操作数是什么? 操作数是指 指令执行的操作所需要数据的来源。操作数是汇编语言指令的一个字段。例如: Mov AX 5678H操作数(AX 5678H)。在操作数这个字段中可以放操作数本身,也可以放操作地址,还可以放操作地址的计算方法。 通常一条指令均包含操作符和操作数。 简单理解: 操作就是+、-、*、/、逻辑运算&、|、~等等.那么操作数就是操作符相邻的变量或常量例如:a+ba、b就是操作数,+就是操作符 操作数是指令执行的参与者,也就是各种操作的对象与之有关的是操作码,,所原创 2021-03-06 10:12:55 · 23209 阅读 · 0 评论 -
mysql C API简单使用及例子参考
centos7 下通过yum 安装 mysql 点击这里参考mysql API 参考:1.初始化mysql句柄MYSQL *mysql init( MYSQL *mysql );通常参数为NULL,表示要动态分配一块空间进行初始化2.连接mysql服务器MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned原创 2021-03-02 22:07:55 · 233 阅读 · 0 评论 -
C/C++ const 总结 / const在函数前/后的作用
Const 是C++中常用的类型修饰符, 使用const 修饰的类型是 常类型,常类型的变量或对象的值是不能被改变的。const的作用:保护被修饰的变量, 防止意外修改, 增强程序的健壮性const定义常量从汇编的角度来看,只是给出了对应的内存地址,所以,const定义的常量在程序运行过程中只有一份拷贝,节省内存空间, 避免不必要的内存分配编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高使用co原创 2021-02-24 13:09:38 · 1115 阅读 · 0 评论 -
C/C++内存管理总结
C/C++内存管理1. C/C++内存分布1.1堆和栈有哪些不同2. C/C++动态内存管理方式2.1 C语言动态内存管理函数2.1.1 malloc2.1.2 calloc2.1.3 reallocmalloc、calloc、relloc区别2.2 C++动态内存管理方式2.2.1 new/delete2.2.2 operator new / operator delete2.2.3 new / delete 原理1. C/C++内存分布C/C++ 程序中内存区域划分:操作系统的核心是内核(ker原创 2021-02-04 18:37:44 · 383 阅读 · 0 评论 -
static变量总结
static 是静态变量的类型说明符.static修饰局部变量----静态局部变量static 修饰的局部变量属于静态存储方式.static修饰局部变量,改变了该变量的生命周期,使该变量的生命周期与程序的生命周期相同,程序结束时才销毁.以代码为例,体会static修饰局部变量的作用:#include<iostream>void A1() { static int tmp = 1; static int tmp1; int ret = 1; std::cout <<原创 2021-02-03 14:18:25 · 6190 阅读 · 0 评论 -
日期类的实现
使用重载运算符(+,-,+=,-=,<,>等)实现日期类的操作。#include<iostream>#include<utility>class Date{public: // 全缺省的构造函数 Date(int year = 1900, int month = 1, int day = 1) :_year(year), _month(month), _day(day) { // 应当对传入的日期进行合法性判定 if (year < 0)原创 2021-02-02 20:29:05 · 300 阅读 · 0 评论 -
进程信号
1.进程信号概念信号是一个软件中断,通知进程某个事件发生了异步事件,打断进程当前的操作,去处理这个事件,信号是多种多样的,并且一个信号对应一个事件,这样才能做到进程收到一个信号后,知道是什么事件,应该如何去处理1.1 信号的查看使用 kill -l 命令查看信号种类信号种类62种,其中,1-31号信号都是非可靠信号(从unix借鉴而来,每个信号都有具体对应的系统事件,有可能会信号丢失)34-64号信号 都是可靠信号(没有具体对应的事件,不会丢失信号)这些信号各自在什么条件下产生, 默认的处理原创 2021-01-18 13:10:08 · 528 阅读 · 0 评论 -
进程间通信(IPC)1_匿名管道理解
进程间通信?因为每一个进程都有一个虚拟地址空间, 保证了进程的独立性, 但也正是因此导致进程间无法通信. 所以需要操作系统提供进程间通信方式, 又因为通信的场景不同, 所以提供了多种不同的进程间通信方式进程间通信的目的数据传输资源共享进程控制通知事件进程间通信方式:System V 标准的进程间通信方式:管道: 用于进程间的数据传输共享内存: 用于进程间的数据共享消息队列: 用于进程间的数据传输信号量: 用于实现进程间的控制管道内核中的一块缓冲区,通过让多个进程都能访问到原创 2020-10-23 10:08:36 · 250 阅读 · 0 评论 -
进程基本概念及简单操作1
进程进程概念进程信息的查看进程的创建子进程的创建进程的状态僵尸进程孤儿进程进程概念进程是什么:进程是系统进行资源分配和调度的基本单位.简单来理解进程就是系统中正在运行的程序;详细来说进程是操作系统对一个运行中程序的描述,通过这个描述信息,实现对程序的调度运行;[例如: 通过描述信息中的内存指针能够找到内存中运行的程序代码及数据,并且通过上下文数据可以保存程序切换调度时正在处理的数据, 以及通过程序计数器保存进程切换时即将执行的下一步命令等等…]操作系统对进程的控制是通过一个数据结构 PCB(原创 2020-09-08 22:46:23 · 256 阅读 · 0 评论 -
判断一个数是否是奇数
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//判断一个数是否是奇数int main(){ int x = 0; printf("请输入一个数:"); scanf("%d", &x); if (x % 2 == 0){ printf("不是奇数\n");...原创 2019-01-01 16:44:10 · 8037 阅读 · 0 评论 -
输出1-100之间的奇数
#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;//输出1-100之间的奇数int main(){ int i = 1; while (i &lt;= 100){ if (i % 2 == 1){ printf("%d ", i); } i++; } system("原创 2019-01-01 16:54:25 · 6216 阅读 · 0 评论 -
求100-999的水仙花数
#include<stdio.h>//求小于999的水仙花数//水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。int main(){ int i; int a; int b; int c; for (i = 100; i <= 999; i++){ //c语言中整数除整数,得到的还...原创 2019-01-08 22:31:10 · 930 阅读 · 0 评论 -
字符大小写转换
编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出//编写一个程序,可以一直接收键盘字符,//如果是小写字符就输出对应的大写字符,//如果接收的是大写字符,就输出对应的小写字符,//如果是数字不输出。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h...原创 2019-01-11 14:23:47 · 2262 阅读 · 1 评论 -
用C语言打印出杨辉三角
杨辉三角,是二项式系数在三角形中的一种几何排列。如下图所示:规律:1.每行端点与结尾的数为1.2.每个数等于它上方两数之和。2.每行数字左右对称,由1开始逐渐变大。3.第n行的数字有n项。4.每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第i+1行的第j个数等于第i行的第j-1个数和第j个数之和,这也是组合数的性质之一。即C(i+1,j)=C(i,j-1)+C...原创 2019-04-07 17:41:24 · 628 阅读 · 0 评论 -
使用递归和非递归分别实现 strlen
递归实现:#include <stdio.h>#include <stdlib.h>int Recursive_MyStrlen(char* string){ if (*string == '\0') return 0; else { return Recursive_MyStrlen(++string)+1; }}非递归实现:int ...原创 2019-07-18 15:39:04 · 124 阅读 · 0 评论 -
使用C语言实现扫雷--详解
本文将介绍如何用C语言多文件编程实现扫雷该示例扫雷程序可实现以下几个功能:自定义原创 2019-07-18 17:43:22 · 1029 阅读 · 0 评论