自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c与c++里malloc和new,引用和指针的一些区别

malloc与new有什么区别?1.malloc是c标准库函数 new是c++中的操作符2.malloc不会调用类的构造函数 new会自动调用类的构造函数3.malloc可以申请数组的内存空间 new只能申请单个变量的内存空间 new[] 才能申请数组4.malloc需要给定申请内存大小的字节数 new只给类型自己会计算5.malloc返回的是void* new返回的是指定类型地址6.malloc出错返回NULL new出错抛出异常引用与指针的区别?引用是C++中 c和c++

2020-09-20 18:17:27 132

原创 c++中string类的原型

c++中string类的原型:class Sting{private:char* s;public://构造函数String(const char *str="")????(strcpy(new char[strNULL?1:strlen(str)+1],strNULL?"":str)){}~String(){//析构函数if(s!=NULL){delete []s;s=NULL;}}//拷贝构造函数String(const String& str)????(strcpy

2020-09-20 17:50:22 345

原创 网络传输的字节序转换

//判断大小端bool islittle(){int num=1;char p=(char)#return *p==1;}uint64_t htonll(uint64_t hostll){if(!islittle()){return hostll;}int p=(int)&hostll;uint64_t ret=htonl(*p);ret=(ret<<32)+htonl(p[1]);return ret;}

2020-09-13 14:23:49 138

原创 bellman ford求最短路径在数据结构图里,可以用来判断是否有负权圈

bellman ford 可以判断图是否有负权圈void graph_bellman_ford(Graph *pg,char key){int pos=get_position(pg,key);if(pos==-1){return;}int vn=pg->vertexnum;int path[vn];int i,j;for(i=0;i<vn;i++){path[i]=MAX;}for(i=0;i<vn;i++){//得到点之间的最短路径,并记录int flag=0

2020-08-30 18:19:25 86

原创 图中求最短路径之一:dijkstra (求所给点到其他点的最短路径)

dijkstra 求所给点到其他点的最短路径void graph_dijkstra(Graph *pg,char key){int pos=get_position(pg,key);if(pos==-1){return;}int vn=pg->vertexnum;int i;int path[vn];//记录点之间的权值int flag[vn];//记录该点是否遍历过for(i=0;i<vn;i++){//初始化path[i]=MAX;(~(1<<31))fl

2020-08-30 17:57:54 278

原创 图中求最短路径方法之一的Floyd(求出所以点之间的最短路径)

floyd 求所有点之间的最短路径#define MAX ~(1<<31)void graph_floyd(Graph *pg){int vn=pg->vertexnum;int path[vn][vn];//定义一个二维数组,为保存顶点之间的最短权值,int i,j,k;for(i=0;i<vn;i++){//初始化for(j=0;j<vn;j++){path[i][j]=MAX;}}for(i=0;i<vn;i++){//把每个顶点的权值记录下

2020-08-30 17:27:53 124

原创 数据结构图:用深度优先搜素,找具体两个顶点的最短路径

图:最短路径用深度优先搜素,找具体两个顶点的最短路径void min_path_dfs(Graph *pg,int cur,int end,int curpath,int mark[],int *pminpath,int path[],int cnt,int savepath[],int *savecnt){if(curpath>*pminpath){//还没到终点,已经走过的路大于当前最小路径return;}if(curend){//到达目标路径if(curpath<*pminp

2020-08-23 16:56:12 219

原创 图的拓扑排序

图的拓扑排序void topt(Graph *pg,int v,int in[]){printf("%c ",pg->vertex[v].date);//显示入度为0的顶点ENode *node=pg->vertex[v].enodes;while(node!=NULL){int pos=get_position(pg,node->date);–in[pos];//相关点的入度减一if(in[pos]==0){topo(pg,pos,in);}node=node-&gt

2020-08-23 16:52:28 85

原创 数据结构里图的两种遍历

图的遍历1.深度遍历void DFS(Graph *pg,int v,int visited[]){visited[v]=true; // 表示顶点已遍历printf("%c “,pg->vertex[v].date);ENode *node=pg->vertex[v].enodes;//当前点的下个点while(node!=NULL){int pos=get_position(pg,node->date);//得到node->date所在顶点的下标if(!visit

2020-08-22 20:01:39 223

原创 5种深层次的排序

1.堆排序//调整为大栈堆void reheap(int arr[],size_t n,size_t index){int key=arr[index];int child=2index+1;while(child<n){if(child+1<n && arr[child+1]>arr[child]){++child;}if(arr[child]>key){arr[index]=arr[child];index=child;child=2ind

2020-08-16 16:57:51 171

原创 6种简单排序

//交换两个数的值void swpa(int *pa,int *pb){int t=*pa;*pa=*pb;*pb=t;}1.冒泡排序void bubble_sort(int arr[],sixze_t n){int i,j;for(i=0;i<n;i++){int isswap=0;for(j=1;j<n-i;j++){if(arr[j]<arr[j-1]){swap(&arr[j],&arr[j-1]);isswap=1;}}if(is

2020-08-16 16:53:24 63

原创 对文件进行简单的处理

//对所写内容进行简单加密void encode(){int i;for(i=0;user[i]!=’\0’;i++){user[i] = ~user[i]; }for(i=0;pass[i]!=’\0’;i++){pass[i] = ~pass[i]; }}//解密void decode(){encode();}//将内容从文件加载出来#define SUPER_FILE “date/super.txt” //定义宏 ““引起来的是文件void load_super(

2020-08-09 16:04:19 66

原创 批量导入图书信息

一个简单的图书系统中对书本信息进行批量导入//批量导入图书信息void loads_book(){printf(“请输入文件路径:”);char filepath[40] = {};scanf("%s",filepath);FILE *fp = fopen(filepath,“r”);if(fp == NULL){printf(“请检查文件是否存在!\n”);return;}struct Book b = {};//书名 作者 出版时间(year,mon,day) 出版社 售价pr

2020-08-09 16:01:02 626

原创 指针与数组

指针与一维数组:int arr[5];int *p = arr; arr == &arr == &(arr+0) == &arr[0]一维数组名其实就是数组首元素的地址数组名和普通的指针的区别在于 数组名不能作为左值p[1] = = *(p+1) == arr[1] == *(arr+1)&arr 数组的地址&arr 和 arr 值相同 但类型不同arr+1 偏移了一个数组元素的长度&arr+1 偏移了整个数组的长度i

2020-07-26 19:09:56 60

原创 项目日志

当一个项目中需要输出内容或者打印日志时一般不直接使用printf()printf(“file:%s function:%s line:%d xxx”,FILE,func,LINE)日志级别:企业开发打印 一般都是按级别打印TRACE DEBUG INFO WARRING ERROR FATAL下面一般都在项目中显示你需要的输出,可以知道具体输出的是哪一行的内容,或者是你哪一行代码出错,查起来也方便。#define LOG_FATAL(format,args…)i

2020-07-26 19:08:48 102

原创 快排,插入两种排序方法

快排:void quickSort(int arr[],size_t left,size_t right){if(left >= right){return; }int key = arr[left];//标准key 放在合适的位置 使得左边的元素全部<=key 右边全部的元素>=keyint i=left,j=right;while(i<j){//右边找一个比key小的while(i<j && arr[j]>=key){–j;

2020-07-19 10:28:20 124

原创 查找一个升序数组中是否包含某个整数元素key

题目:查找一个升序数组中是否包含某个整数元素key二分法查找 //升序数组int search(int arr[],size_t n,int key){int left = 0;int right = n-1;while(left <= right){int mid = (left+right)/2;if(key<arr[mid]){right = mid-1;}else if(key>arr[mid]){left = mid+1; }else{return m

2020-07-19 10:19:48 256

原创 随机数和进制

有学到在学校没用过的产生随机数:#includesrand(time(NULL));int op=rand();如果产生某个范围内的随机数假设:(1-31)int op=rand()%31+1;可变长数组int n=0;scanf("%d",&n);int arr[n];主要用在最开始不知道数组长度的情况嵌入式的经典进制用法1.对于一个未知的int num, 需要把num的第5个二进制位变成1,其它二进制位不能改变把num的第7个二进制位置0,其它位不变num = n

2020-07-14 08:00:07 142

原创 2020-07-12

这周第一次接触到了linux首先就是linux的基本命令:ls -l 显示当前下的具体内容rm -r 删除目录或者文件cp -r 复制文件mkdir 创建目录touch 新创文件clear 清屏cd 切换路径这是这几天经常用到的命令还有许多find 路径 -name “查找的内容”|xrags grep -n “查找的内容”—这个很实用tar -zcvf xx.xx.tar.gz 文件列表 用于压缩文

2020-07-12 21:57:36 60

空空如也

空空如也

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

TA关注的人

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