自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (6)
  • 收藏
  • 关注

原创 排序算法 C

冒泡: i的起始位置是数组的末尾,j是数组的第一个元素,j从第一个数开始找大的值,每次和下一位进行比较,把最大的值放到j+1位,保证i的位置存放最大值,falg记录是否发生过交换,没有发生过交换则说明排序已完成// 冒泡void bubble_sort(TYPE* arr,size_t len){ bool flag = true;//flag记录中间过程是否产生过一次交换 for(int i=len-1; i>0 && flag; i--) { flag = fa

2021-11-15 09:31:07 627

原创 TCP客户端

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>typedef struct sockaddr* SP;int

2021-11-14 10:08:56 1855

原创 TCP服务端

#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>typedef struct sockaddr* SP;vo.

2021-11-14 10:08:15 2914

原创 C文本读写

文件IO: FILE *fopen(const char *path, const char *mode); 功能:打开或创建文件 path:文件的路径 mode:打开模式 r 以只读权限打开文件,如果文件不存在则打开失败 r+ 在r的基础上增加写权限 w 以只写权限打开文件,如果文件不存在则新建,如果文件存在则清空 w+ 在w的基础上增加读权限 a ...

2021-11-13 20:09:47 149

原创 C++对二进制文件读写

1、创建类对象,打开文件 使用open成员函数、构造函数打开文件,mode的参数增加 ios::binary2、读写 istream &read( char *buffer, streamsize num ); buffer:存储数据的缓冲区首地址 num:读取多少字节,一般给缓冲区的大小 streamsize gcount(); 功能:获取上一次读取操作读到字节数 ostream &w...

2021-11-13 17:40:03 1385

原创 C++对文本文件读写方法

1、创建流对象,打开文件 void open( const char *filename ); void open( const char *filename, openmode mode ); filename 文件名 mode:打开模式 ios::app 添加输出 ios::ate 当已打开时寻找到EOF ios::binary 以二进制模式打开文件 ios::in 为读取打开文件 ...

2021-11-13 17:38:29 3725

原创 数据类型的大小

整型: 1、有符号 signed signed char 1 -128~127 signed short 2 -32768~32767 signed int 4 /8 64是8 正负20亿 signed long 4/8 signed long long 8 正负9开头19位...

2021-11-12 11:22:29 452

原创 数据存储位置及各位置存储数据类型

text 代码段 二进制指令 只读段 常量 只读的,强制修改会产生段错误 data 数据段 初始化过的全局变量、初始化化过的静态局部变量 bss 静态数据段 未初始化过的全局变量、未初始化化过的静态局部变量 运行前该段会自动清零,默认值是0 heap 堆 由程序员手动管理,缺点:使用麻烦,优点:足够大 stack 栈 局部变量、块变量 ...

2021-11-12 11:03:23 754

原创 const和static

const 超出其作用作用域之后,其空间就会被释放,保护变量不被显式的修改 static 表示静态、作用域限于包含它的文件中、变量可以被修改、 1、全局变量前加static变为全局静态变量、未初始化的静态变量自动初始化为0 2、局部变量前加static变为局部静态变量、作用域保持不变 3、函数返回类型前加static为静态函数、静态函数只是在声明他的文件当中可见,不可被其他文件使用...

2021-11-11 21:16:13 335

原创 内核链表和普通链表的区别

简单朴素点讲:内核链表是将链表节点放入结构体中,而普通链表是将结构体放入链表中

2021-11-11 16:09:17 460

原创 TCP和UDP的区别

TCP:面向连接 可靠 一对一 数据流, 速度慢 用于文件传输UDP: 无连接 不可靠 一对多 报文, 速度快 用于视频,电话,实时

2021-11-10 18:41:37 1988

原创 指针相关知识点

指针的运算: 指针变量只有一下运算是有意义的: 指针 + n 前进n个元素 指针 - n 后退n个元素 指针 - 指针 计算出两个指针变量之间相隔了多少个元素,只有类型相同才能相减 指针与const const int* p; int const* p; 保护指向的内存不被修改 int* const p; 保护指针变量不被修改(指向不能修改)...

2021-11-09 16:12:22 102

原创 多态、虚函数、纯虚函数

什么是多态: 指的是指令的多种形态,当同一个指令被调用时,它能根据参数、环境的不同做出相应的操作,这种情况叫做多态 根据确定执行哪个操作的最终时间,将多态分为编译时多态、运行时多态一、编译时多态: 当调用重载函数时,编译器会根据函数参数的类型、个数等,在编译器就能确定执行的是哪个版本的重载函数,这个就叫做编译时多态,模板技术也是。二、运行时多态: 当子类覆盖了父类的同名函数,然后用父类指针或引用指向子类对象,并访问虚函数时,它可以根据父类指向那个子类对象,来调...

2021-11-09 14:30:36 1035

原创 力扣 剑指offer 24.反转链表

解题思路:定义一个链表节点node为nullptr,一个temp节点来存储head->next,让head->next=node,更新node的值为head,head的值为temp,让head结点循环向后遍历,直到head节点为空,此时的node就是反转后链表的头节点代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *

2021-11-09 10:36:38 285

原创 深拷贝和浅拷贝

拷贝构造也是一种特殊的构造函数,格式为: 类名(const 类名& that) // const可加可不加,但是加更好 { } 什么时候调用拷贝构造: 当使用旧的对象给新对象初始化时,就会自动调用拷贝构造 Test t1; // 调用无参构造 Test t2 = t1; // 自动调用拷贝构造 拷贝构造的任务: 顾名思义拷贝构造负责把旧对象中的成员变量...

2021-11-09 08:34:30 464

原创 指针和引用的区别

一、为什么要使用指针: 1、跨函数共享变量(输出型参数),可以用引用代替 2、提高传参效率,引用可代替 3、配合字符串,string可代替 4、配合堆内存,继续使用指针二、什么情况下使用引用: 1、跨函数共享变量,比指针安全(不存在空引用,也极少出现野引用),比指针方便(不需要取地址、解引用) 2、提高传参效率,引用的传参效率比指针还高,因为指针还需要4/8字节存储地址编号,而引用一个字...

2021-11-08 20:59:11 274

原创 new/delect与malloc/free的区别

1、c++中有专门管理堆内存的语句,c语言中只能使用标准库提供的函数new 分配内存,相当于mallocdelete 释放内存,相当于free2、new在分配内存时允许对内存进行初始化 int* p=new int(val);3、new/delete 不能与malloc/free 混合使用 int* p=new int; free(p);//虽然语法支持,但是不要这样使用 使用new分配内存时会自动调用类、结构、联合的构造函数...

2021-11-08 11:10:20 124

原创 力扣 7. 整数反转 C++

解题思路:简单的反转,需要注意int的容量问题知识点:INT_MIN在标准头文件limits.h中定义,定义形式为 #define INT_MAX 2147483647 #define INT_MIN (-INT_MAX - 1) 代码:int reverse(int x){ long n = 0; while (x) { n = n * 10 + x % 10; x /= 10; } return n > INT_MAX || n < ..

2021-11-05 18:51:20 4687

原创 力扣 118. 杨辉三角

解题思路:简单的循环利用,将数组每行第一个和最后一个值赋一,其他赋予上面相邻的两个值代码:class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int> > ret(numRows); for(int i=0;i<numRows;i++){ ret[i].resize(

2021-11-04 18:58:12 87

原创 力扣 595. 大的国家 mysql

解题思路:简单的select from语句的应用,or表或,where表条件代码:select name,population,area from world where population > 25000000 or area > 3000000;

2021-11-03 13:38:18 109

原创 力扣 剑指 Offer 09. 用两个栈实现队列 C++

解题思路:用两个栈stack1进数据stack2出数据,出的时候如果stack2为空,stack1不为空,则将stack1中的数据全部导入stack2中代码:class CQueue { stack<int> stack1,stack2;public: CQueue() { while(!stack1.empty()){ stack1.pop(); } while(!stack2.emp.

2021-11-03 10:18:48 117

原创 力扣:566. 重塑矩阵

解题思路:当两个数组元素不等或者格式一样时,返回原数组,否则循环nums将nums的值赋给rmat,需要理解的地方主要是,i的值除以rmat的c为rmat的行值,对c求余为rmat的列值,nums同代码:class Solution {public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) { int m =

2021-11-02 19:43:21 111

原创 力扣 121.买卖股票的xx时机 C++

解题思路:定义一个low记录prices值最低的位置,Max记录最大的利润,遍历数组如果比low位置的值更低,则更新low的位置,否则则更新Max为Max和距离最低价格位置的差的最大值,需要注意的是当数组只有一个值时应分开讨论代码:​class Solution {public: int maxProfit(vector<int>& prices) { //如果prices只有一个数据则返回0 if(prices.size()==1)

2021-11-01 21:13:27 122

原创 力扣 350. 两个数组的交集 II C++

解题思路:循环遍历两个数组,相等则存入num3,并将num1此处的值赋为非法值代码:class Solution {public: vector<int> intersect(vector<int>& nums1, vector<int>& nums2) { vector<int> nums3; //接交集 //遍历两个数组,找到相等的值 for(int num2:nu

2021-11-01 20:29:54 3791

原创 力扣 88. 合并两个有序数组 C++

解题思路:第二次做这样的题了,还是错了,整体思路就是用三个指针,mid指向nums1有值的最后一个即m-1,end指向nums1的最后一个即m+n-1,n-1指向nums2的最后一个循环遍历到mid或者n-1一个为空,值得注意的是:要判断nums2是否遍历完,要是没有遍历完需要把nums2的值赋到nums1里代码:class Solution {public: void merge(vector<int>& nums1, int m, vector<int&gt

2021-10-31 20:35:47 145

原创 力扣 1.两数之和 C++

解题思路:以前写过一样的题目,比较简单,但是容易出错,或者忘了重复元素不再去查找代码:class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> num; int first=0,second=0; for(first;first<nums.size()-1;first++)

2021-10-31 20:08:52 238

原创 力扣:53. 最大子序和 C++

解题思路:prv记录前面值的和,如果prv+it>it即前面的值加上现在数这个值小于这个数本身,则直接从这个数开始计算,这个数作为第一数,继续找下去,Max记录片段的最大值代码:class Solution {public: int maxSubArray(vector<int>& nums) { int Max=nums[0],prv=0; for(int it:nums){ prv=max((prv+i

2021-10-31 19:58:36 4234

原创 力扣 19. 删除链表的倒数第 N 个结点 C++

解题思路:利用双指针,指针node2先走N个值,然后循环当node2->next!=nullptr时,node1循环向后移动,当node2位于链表最后一位时,node1就是要删除节点的前一个,直接让node1->next=node1->next->next,即可需要注意的地方:当node2移动N个值后已经是空指针时,则n==1,则说明链表只有一个元素,n!=1,则说明删除的是第一个元素,这两种情况要分开讨论代码:/** * Definition for sin

2021-10-31 19:17:08 260

原创 力扣 876. 链表的中间结点

解题思路:定义一个size记录链表长度,第一次遍历确定链表的长度,第二次遍历(size+1)/2个即为中间节点代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr)

2021-10-31 17:58:49 72

原创 力扣 557. 反转字符串中的单词 III C++

解题思路:先写一个反转begin到end的函数,然后去查找s中每个单词的首和末尾的空格,调用反转函数遇到的问题:写反转函数时,起初使用的是无返回值的函数,但是调用后发现s里的值不改变,后面改为返回s,并用s重新接代码:class Solution {public: string resver(string s,int begin,int end) { while(begin<end) { swap(s[begin]

2021-10-30 17:10:37 263 1

原创 力扣283. 移动零 C++

解题思路:定义两个指针,指针zero用来找零的位置,nzero用来找zero指针后下一个非零,找到后交换两个位置的值,继续找零的位置class Solution {public: void moveZeroes(vector<int>& nums) { int len=nums.size(), nzero=0; for(int zeor=0;zeor<len;zeor++){ if(nums[zeor]==0)

2021-10-30 16:35:16 241

原创 力扣 344. 反转字符串 C++

解题思路:简单的反转遍历,交换即可代码:class Solution {public: void reverseString(vector<char>& s) { int start=0,end=s.size()-1; while(start<end) { swap(s[start],s[end]); start++; end--;

2021-10-30 16:34:57 143

原创 力扣 167. 两数之和 II - 输入有序数组 C++

解题思路:第一眼看过去觉得比较简单双指针循环遍历就好,但是需要注意判断是否有重复元素,重复元素不再去寻找代码:class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { vector<int> sum; for(int first=0;first<numbers.size()-1;first++){

2021-10-29 19:16:29 190

原创 力扣 278. 第一个错误的版本C++

解题思路: 二分查找简单应用代码:// The API isBadVersion is defined for you.// bool isBadVersion(int version);class Solution {public: int firstBadVersion(int n) { int left=1,right=n; while(left<right) { int mid=left...

2021-10-29 18:49:17 79

原创 力扣 35. 搜索插入位置 C++

解题思路:利用二分查找的方法找到应该插入的位置,插入代码:class Solution {public: int searchInsert(vector<int>& nums, int target) { int left=0,right=nums.size()-1; while(left<=right) { int mid=left+(right-left)/2;

2021-10-29 18:45:06 132

原创 力扣 217. 存在重复元素 C++

解题思路:利用哈希表,循环插入元素,如果插入时发现已经存在则返回正确代码:class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_set<int> num; for(int it:nums) { if(num.find(it)!=num.end()) {

2021-10-29 18:42:16 165

原创 力扣 977. 有序数组的平方 C++

解题思路:遍历数组nums,将它的成员的值平方赋值给nums2代码:class Solution {public: vector<int> sortedSquares(vector<int>& nums) { vector<int> nums2; for(int it:nums) { nums2.push_back(it*it); }

2021-10-29 18:37:56 172

原创 力扣 189. 旋转数组 C++

解题思路:先写一个反转start—end的函数,将整个数组反转,再依次旋转数组的前k个值和剩下的值反转过程: 原始数组 1234 5 6 7 第一次反转7 6 5 4 3 2 1 第二次反转 5 ...

2021-10-29 18:31:52 118

原创 力扣 704. 二分查找 C++

解题思路与方法:left对应查找的起始位置,right对应查找的最后位置,mid对应中间位置比较mid处的值和target.的值,如果相等则返回,大于则让right改到mid-1处,小于则left改为mid+1处总结:简单的也是最经典的二分查找,要注意的地方主要是:1、求mid的值时应该采取left+(right-left),不能采取(right+left)/2,以防止数据溢出;2、大于时,right应改到mid-1处,小于时left应改到mid+1处,以减少运行时间class Solut

2021-10-27 19:44:58 111

原创 面试题 08.07. 无重复字符串的排列组合 C++

无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。示例1:输入:S = "qwe"输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"]示例2:输入:S = "ab"输出:["ab", "ba"]提示:字符都是英文字母。字符串长度在[1, 9]之间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutation-i-lcci...

2021-10-26 18:30:40 180

getch获取首次添加

getch获取首次添加

2021-08-10

TSS9T}{$HG{V3PV8$~EIS46.png

bashrc文件内容

2021-08-10

GitHub上传项目.md.pdf

github上传项目的方法

2021-08-10

需要背诵的基础知识点.txt

基础知识点

2021-07-20

获取键盘动作cklwxx

获取系统命令

2021-07-14

常用的c语言32个关键字.c

32关键字,程序小白

2021-07-10

空空如也

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

TA关注的人

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