![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
无@话^o^可说
这个作者很懒,什么都没留下…
展开
-
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 · 346 阅读 · 0 评论 -
网络传输的字节序转换
//判断大小端 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 · 139 阅读 · 0 评论 -
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 阅读 · 0 评论 -
图中求最短路径之一: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 阅读 · 0 评论 -
图中求最短路径方法之一的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 阅读 · 0 评论 -
数据结构图:用深度优先搜素,找具体两个顶点的最短路径
图:最短路径 用深度优先搜素,找具体两个顶点的最短路径 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 阅读 · 0 评论 -
图的拓扑排序
图的拓扑排序 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->原创 2020-08-23 16:52:28 · 86 阅读 · 0 评论 -
数据结构里图的两种遍历
图的遍历 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 · 226 阅读 · 0 评论 -
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 · 172 阅读 · 0 评论 -
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 阅读 · 0 评论 -
对文件进行简单的处理
//对所写内容进行简单加密 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 阅读 · 0 评论 -
批量导入图书信息
一个简单的图书系统中对书本信息进行批量导入 //批量导入图书信息 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 · 633 阅读 · 0 评论 -
指针与数组
指针与一维数组: 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 阅读 · 0 评论 -
项目日志
当一个项目中需要输出内容或者打印日志时 一般不直接使用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 · 103 阅读 · 0 评论 -
快排,插入两种排序方法
快排: void quickSort(int arr[],size_t left,size_t right){ if(left >= right){ return; } int key = arr[left];//标准key 放在合适的位置 使得左边的元素全部<=key 右边全部的元素>=key int i=left,j=right; while(i<j){ //右边找一个比key小的 while(i<j && arr[j]>=key){ –j;原创 2020-07-19 10:28:20 · 125 阅读 · 0 评论 -
查找一个升序数组中是否包含某个整数元素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 · 258 阅读 · 0 评论 -
随机数和进制
有学到在学校没用过的 产生随机数: #include srand(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 阅读 · 0 评论 -
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 · 61 阅读 · 0 评论