C/C++
qustJHJ
嵌入式学习,硬件电路学习
展开
-
字符数组与字符串指针的区别
字符串指针与字符数组一般情况下都能对存储的字符串进行修改等操作,但是当字符串指针被定义为字符串常量时(静态区),字符串指针所指向的字符串就不能被改变。如下:#include int main(){ char s1[]="hello,world"; char s2[]="hello,world"; char *s3; char *s4; s3="hello,world"; s4原创 2017-03-17 15:12:09 · 476 阅读 · 0 评论 -
从字符串中获取最长子串的长度
/**获取字符串最长子串,为了避免回溯,采用一个数组指针,每个字符*对应的值作为数组索引并指向该字符开始的子串;在遍历该字符串的*过程中,数组指针指向该字符最后一次出现的位置;*temp指向 字符*end 上一次在字符串中出现的位置,然后让addr[*end]*指向字符*end当前位置;若temp指针指向的位置在s指针的右边,则根据*temp指针指向的位置调整s指针的位置。**/原创 2017-06-13 10:10:27 · 1014 阅读 · 0 评论 -
哈希表(代码整理)
/**哈希表*哈希函数的构造方法: * 1.直接定址法 f(key)=a*kay+b a、b为常数* 2.数字分析法 取关键字为哈希地址* 3.平方取中法 把key平方,取中间几位* 4.折叠法* 5.除留余数法 f(key)=key%p (p<=表长)* 6.随机数法 f(key)=random(key)转载 2017-07-07 21:22:42 · 1068 阅读 · 0 评论 -
平衡二叉树
平衡二叉树:就有二叉查找树(排序树)性质、且左子树与右子树的深度差(平衡因子)的绝对值不超过1.最小不平衡子树:离插入位置最近且平衡因子绝对值大于1的节点,以该节点构成的子树为最小不平衡子树。平衡二叉树的插入: 构建平衡二叉树大体分三种情况:插入节点后,如果最小不平衡子树根节点与其孩子平衡因子同为正,则直接右旋转;如果最小不平衡子树根节点与其孩子平衡因子同为负,则直接左旋转;如果原创 2017-07-07 21:36:29 · 256 阅读 · 0 评论 -
希尔排序
/**希尔排序:* 选取一个小于n的整数d作为第一个增量,把序列分为d组,即所有相互之间距离为d整数倍的* 元素为同一组,在各组内进行直接插入排序;取第二个增量d2(d2<d),重复上面分组与排序的* 过程,直到di=1时,即所有元素放在同一组中进行直接插入排序。*/#include void shell_sort(int *arr,int n){ int i原创 2017-07-08 21:14:08 · 203 阅读 · 0 评论 -
堆排序
/**堆排序***/#include //调整算法void heapAdjust(int *arr,int i,int n){ int nChild; int tmp; for(;2*i+1<n;i=nChild) { //子节点的位置=2*(父节点的位置)+1 nChild=2*i+1; //得到子节点中较大的节点 if(nChild ’就是大顶堆原创 2017-07-08 21:14:58 · 222 阅读 · 0 评论 -
to_string 与 abs()
to_string 使用to_string时,出现:166_fractionToRecurringDecimal.cpp:24: error: call of overloaded ‘to_string(int)’ is ambiguous 把int型的数据转化为string时,提示是模糊的! 然后仔细查阅to_string的函数原型,在C++11中提供了9个函数重载: string to_原创 2017-08-30 16:34:04 · 1015 阅读 · 0 评论 -
初识c++类(笔记)
类定义包含两部分类头,由关键字class 及其后面的类名构成类体由一对花括号包围起来类定义后面必须接一个分号或一列声明。 class Screen { /* … */ }; class Screen { /* … */ } myScreen, yourScreen; 每个类定义引入一个不同的类型,即使两个类具有全部的成员表,它们仍然是不同的类型。 除了静态(static)原创 2017-12-01 17:35:47 · 240 阅读 · 0 评论 -
+ - 与>> <<运算优先级
+、-运算符的优先级高于<< >>位移运算符int mian(){ int a=2,b=4; cout<<"a+b>>1="<<(a+b>>1)<<endl; cout<<"a+(b>>1)="<<(a+(b>>1))<<endl; return 0;}输出: a+b>>1=12 a+(b>>1)=10原创 2017-12-01 17:40:48 · 3600 阅读 · 4 评论 -
static笔记
c与c++ 中都有static 关键字,主要用于修饰局部变量、全局变量、函数;c++ 中还有类数据成员与成员函数。static 的主要作用包括: 1. 扩展生命周期 2. 限制作用域 3. 唯一性static修饰局部变量/*来自:http://blog.csdn.net/shanghairuoxiao/article/details/72904292static 修饰局部变量...原创 2018-02-26 22:48:11 · 284 阅读 · 0 评论 -
直插排序
#include /**直接插入排序,从数列左边开始排序,每往右移动一次,若数小于现在数列*最右边的数,则进行重新排序,先前的序列已经是有序化的。*/void insert_sort(int *arr,int n){ int i=0,j=0,temp=0; for(i=1;i<n;i++) { if(arr[i]<arr[i-1]) { temp=arr[i];原创 2017-07-03 11:24:41 · 348 阅读 · 0 评论 -
选择排序
#include /* * select sort 选择排序,以一个值为最小值,然后和其他值比较,遍历所有,找到最小的,交换位置 * */void select_sort(int *arr,int n){ int i=0,j=0,temp=0,min=0; for(;i<n-1;i++) { min=i; for(j=i+1;j<n;j++) {原创 2017-07-03 11:22:48 · 189 阅读 · 0 评论 -
字符与字符串
用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列号。用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制为零的字符'\0'初始化。编译器:词法分析如果(编译器的)输入流截止某个字符之前已经被分解为一个个符号,那么下一个符号将包括从该字符之后可能组成一个符号的最大字符串。“贪心法”原创 2017-03-22 09:47:17 · 391 阅读 · 0 评论 -
数组
C语言中的数组值得注意的两点:1.C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。数组的元素可以是任何类型的对象,模仿出多维数组也很正常。2.对于一个数组:确定数组的大小,以及获得指向该数组下标为0的元素的指针。malloc()函数有可能无法提供内存,内存分配失败后会返回空指针。原创 2017-03-23 10:54:32 · 278 阅读 · 0 评论 -
空指针并非空字符串,运算符运算顺序
在C语言中将一个整数zhuanhuan转换为一个指针,最后得到的结果都取决于具体的C编译器实现,但是,有一个特殊情况就是常数0,编译器保证由0转换而来的指针不等于任何有效的指针。出于代码文档化的考虑,常数0这个值经常用一个符号来代替:#define NULL 0当常数0被转换为指针使用时,这个指针绝对不能被解除引用,换句话说,当我们将0赋值给一个指针变量时,绝对不能企图使用该指针所指向的内原创 2017-03-24 09:18:56 · 371 阅读 · 0 评论 -
string.h
1. size_t strlen(char const *string),返回字符串长度即找到NUL;返回值为无符号数,在两个字符串长度进行比较时避免使用减法运算,因为无符号数不可能小于0!!!!2.char *strcpy(char *dst,char const *scr);把scr复制到dst字符串中,是覆盖性复制,注意,这个函数并不判断两个字符串的长度,如果scr的长度大于dst的原创 2017-04-29 15:20:42 · 340 阅读 · 0 评论 -
输入、输出函数
1. 在调用printf输出调试时,要刷新缓冲区,因为函数调用的输出结果被写入缓冲区中,并不立即显示在屏幕上,在没有干预缓的情况下,冲区只有当它写满时才被刷新到设备或文件中。printf("something");fflush(stdout);2.输入、输出函数族目的 可用于所有的流原创 2017-05-15 23:04:11 · 407 阅读 · 0 评论 -
KMP字符串查找算法
#include #include void get_next(char *t,int *next){ int i=0,j=-1; next[0]=-1; while(t[i]!='\0') { if(j==-1 || t[i]==t[j]) { i++,j++; printf("%d %d\n",i,j); if(t[i]!=t[j]) next原创 2017-06-07 14:47:14 · 430 阅读 · 0 评论 -
冒泡排序
/**冒泡排序* 比较相邻的两个数,如果前者大于后者,就交换位置; 每次排到最后面的大数,下次不再比较*/#include void bubble_sort(int *arr,int len){ register int temp=0; int i=0; int j=0; int flag=1; for(i=0;i<len-1 && flag==1;i++) //一原创 2017-06-30 22:06:11 · 291 阅读 · 0 评论 -
快速排序
#include /**快速排序:在一个序列中随意选一个数作为基准,把大于基准的放到序列右边,*小于基准数的放到序列左边,就把大序列分成了两段,然后递归。*采用挖坑(挖掉的数temp)找数,若从最左边挖坑,先从右边找第一个小于temp的数*放到坑里,然后就出现了新坑;在从左边找第一个大于temp的数放到新坑里,继而*又出现一个新坑,一次类推,把序列分成大小两部分。*/void q原创 2017-07-01 15:12:48 · 217 阅读 · 0 评论 -
二叉树 相关操作
#include #include #include #define TREE_TYPE inttypedef struct tree_node {TREE_TYPE value;struct tree_node *left;struct tree_node *right;}TreeNode;/**指向根节点的指针,static 防止其他文件修改*///static TreeNode *tree;原创 2017-06-10 09:43:53 · 299 阅读 · 0 评论 -
c/c++ 中 extern 用法
c/c++ 中extern 关键字详细参考http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html基本解释:extern可以置于变量或者函数前,以标示该变量或者函数定义在其他的文件中,提示编译器遇到此变量或者函数时去其他模块寻找定义;此外extern也可以用来进行链接指定。extern 变量在一个...转载 2018-02-27 11:24:26 · 1275 阅读 · 0 评论