C/C++笔记
三石你好
这个作者很懒,什么都没留下…
展开
-
Dijkstra算法模板 - 解决网络延迟时间问题
class Solution {public: int networkDelayTime(vector<vector<int>>& times, int n, int k) { const int inf = INT_MAX/2; //定义无穷距离,除 2 是为了防止计算距离的时候溢出 // 标记变量 visited 数组 // 0 表示索引对应的节点未被访问过,还没有计算过从原点到对应节点的最短距原创 2022-03-26 22:37:35 · 546 阅读 · 0 评论 -
图的广度优先搜索模板-解决01矩阵问题
class Solution { static constexpr int direct[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; // 方向变量,上下左右public: vector<vector<int>> updateMatrix(vector<vector<int>>& mat) { int m = mat.size(); // 行数 i原创 2022-03-26 19:07:07 · 881 阅读 · 0 评论 -
python的TCP套接字编程
一下代码仅供理解TCP套接字服务器IP使用127.0.0.1后,可在同一台电脑上跑两个程序客户端from socket import *from pip._vendor.distlib.compat import raw_inputdef main(): server_address = '127.0.0.1' # 服务器的IP地址 server_port = 1200原创 2022-03-22 18:45:36 · 4685 阅读 · 0 评论 -
python的UDP套接字编程
下面的代码用来理解UDP套接字客户端代码from socket import *from pip._vendor.distlib.compat import raw_input#127.0.0.1是本地回环地址,经常用来进行测试def main(): server_address = '127.0.0.1' # 服务器的IP地址 server_port = 1200原创 2022-03-22 18:15:07 · 4335 阅读 · 0 评论 -
KMP算法
class Solution {public: int strStr(string haystack, string needle) { int n = haystack.size(); int m = needle.size(); if(m==0) return 0; vector<int> next = getNext(needle); for(int i=0, j=0; i&l原创 2022-03-02 17:38:30 · 70 阅读 · 0 评论 -
并归排序C++代码
// 并归排序class Solution {public: vector<int> sortArray(vector<int>& nums) { vector<int> temp(nums.size()); // 开辟一个辅助数组 mergeSort(nums, temp, 0, nums.size()-1); return nums; } // 并归排序核心代码!!! void原创 2022-01-29 20:28:03 · 1348 阅读 · 0 评论 -
C/C++最大堆代码
C代码typedef struct heap{ int capacity; // 堆的容量,即能容纳多少个有效的数据元素 int size; // 堆的当前数据量 int* data; // 指向堆中存放数据的地址,即数组的首元素}maxHeap;maxHeap* MaxHeapInit(int capacity){ maxHeap* h = (maxHeap*)malloc(sizeof(maxHeap)); // 分配一个堆对象原创 2022-01-25 16:33:58 · 540 阅读 · 0 评论 -
C语言选择排序代码
int* sortArray(int* nums, int numsSize, int* returnSize){ *returnSize = numsSize; for(int i=0; i<numsSize-1; i++) { // 找出第 i 小的数 int minIndex = i; // 暂定第 i 小的数的索引为 i for(int j=i+1; j<numsSize; j++) //原创 2022-01-24 21:59:21 · 3103 阅读 · 1 评论 -
希尔排序代码
int* sortArray(int* nums, int numsSize, int* returnSize){ *returnSize = numsSize; int increment; for(increment=numsSize/2; increment>0; increment/=2) // 增量序列 { int k; // 将元素分组,k 表示组编号,同原创 2022-01-23 17:56:51 · 420 阅读 · 0 评论 -
插入排序代码
int* sortArray(int* nums, int numsSize, int* returnSize){ *returnSize = numsSize; int i; // 表示将要插入的元素的位置 for(i=1; i<numsSize; i++) // 将要插入的元素从第二个开始 { int curDigit = nums[i]; // 当前要插入的元素原创 2022-01-22 15:59:50 · 1207 阅读 · 0 评论 -
C++引用
变量名是什么变量名用来标识一个存储空间(空间大小取决于将变量定义成的类型)。更通俗的说,变量名就是符号地址,在编译的过程中,编译器(编译器中有一个符号表,管理着符号与地址的映射)会将符号地址变成内存地址(这个内存地址是用机器码来表示的),所以符号地址不占空间。引用是什么假定已经定义了一个变量,那么引用就是给这个变量所标识的空间取了另外一个名字,即:这个空间有两个符号地址,所以引用是不占内存的。经常将引用比作常指针,只是引用的作用与常指针相似,但是常指针是占用内存的,即用了一块空间来保存另一个变量的地址原创 2021-11-07 12:02:23 · 98 阅读 · 0 评论 -
队列顺序存储结构中的循环队列判空与判满的过程
循环队列介绍这里介绍的时队列的顺序存储结构:初始时:Q.front = Q.rear = 0;队首指针进1:Q.front = (Q.front+1)%maxSize;队尾指针进1:Q.rear = (Q.rear +1)%maxSize;队列长度: (Q.rear +maxSize-Q.front)%maxSize;出队入队时:指针都按顺时针方向进 1。显然,队空的条件是:Q.front = Q.rear。但是,如果入队的速度快于出队的速度,队尾指针很快就赶上队首指针,此时,也有:Q.fr原创 2021-10-16 15:49:14 · 2785 阅读 · 0 评论 -
C中的字符串常量、字符串数组以及字符串指针
字符串常量"hello";上述用双引号括起来的是字符串常量,该常量保存在常量区,不能修改它。双引号的作用是在最后一个字符的后面加’\0’字符并且返回该字符串常量的首地址,即第一个字符 h 的地址。字符串数组char str[]= "hello";字符串数组中必须包含’\0’,否则就变成了字符数组。上述操作只能在定义的时候使用,即,使用数组的初始化功能。用字符串常量来初始化字符串数组,字符串常量的地址并没有赋值给 str,数组名是地址常量,不能修改;并且上述操作使用的是数组的初始化功能,即,先原创 2021-09-30 15:32:44 · 755 阅读 · 0 评论 -
C语言中的二级指针
一级指针一级指针直接称为指针,是一个存储地址的变量。以int型为例:int a=10;//定义了一个int型变量,赋初值为10int *p=&a;//定义了一个int型指针变量,并将a变量的地址赋值给指针变量*P = 5;//通过使用*来解引用,这样就可以操作指针指向的变量二级指针二级指针分为两种:指向指针的指针指向数组的指针1. 指向指针的指针指向指针的指针定义如下:int **p;/* int *p表示的指向int型变量的指针变量,再加一个*,表示的还是指针原创 2021-09-30 14:43:06 · 546 阅读 · 0 评论 -
缓冲/缓存与C++
缓冲与缓存缓冲与缓冲本质上都是一块内存区域,缓冲强调的时写操作(对硬盘),缓存强调读操作(对硬盘)。缓冲缓冲(buffer)是指:向硬盘写入数据时,先把数据放入到一块内存区域(称为缓冲区)中,然后再一起向硬盘写入,这样可以把分散写操作集中进行。强调写操作缓存缓存(cache)是指:在读取硬盘中的数据时,把常用的数据保存到一块内存区域(称为缓存区)中,再次读取该数据时,直接在缓存区中读取。强调读操作。C++的输入输出机制三级标题四级标题五级标题六级标题...原创 2021-09-29 13:50:02 · 512 阅读 · 0 评论 -
指针与关键字const
C语言之指针与关键字constconst int a = 10;//a的值不可改变,如果在程序中出现改变a的值的代码,程序会出现编译错误,下同。int function_1(const int *p, int n);//使函数不能通过指针p来改变指针p指向的内容//但可以通过其他指针来修改指针p指向的内容,如int function_1(const int *p, int n){ int *a = p; ...}//虽然不能通过指针p来修改指针p指向的内容,但可以通过指针a来修改指针p所指原创 2020-11-12 16:45:25 · 101 阅读 · 0 评论 -
数据对象,变量名,左值
数据对象:用于存储值的数据存储区域统称为数据对象,即对象指的是实际的数据存储(内存)。变量名:标识对象的一种方法。左值:标识特定数据对象的名称或表达式,即标识或定位存储位置的标签。...原创 2021-05-09 12:57:56 · 75 阅读 · 0 评论