C/C++
文章平均质量分 67
Follow_My_Heart
菜鸟喜欢贴代码,高手喜欢总结高论
展开
-
循环移位
题目要求:将字符串str进行循环移位,要求算法空间复杂度O(1),时间复杂度O(n)思路:假设str需要循环移位k位,则将其分为前后两部分,分别长k和n-k,称AB则循环移位的过程即为XY->YX. 可由XT即转置完成,(XTYT)T=(YT)T(XT)T=YX实现如下:/* * Reverse_String.cpp * * Created on: May转载 2014-03-07 23:25:34 · 918 阅读 · 0 评论 -
堆排序二
#include using namespace std;void Sift(int r[], int i, int n){ int j = 2*i; int temp; while (j <= n){ if(j<n && r[j]<r[j+1]){ j++; } if(r[i] > r[j]){ break; } else{ temp原创 2015-10-13 23:11:59 · 401 阅读 · 0 评论 -
堆排序一
#include using namespace std;void Sift(int r[], int i, int n){ int j = 2*i+1; int temp; while (j <= n){ if(j<n && r[j]<r[j+1]){ j++; } if(r[i] > r[j]){ break; } else{ tem原创 2015-10-13 23:36:30 · 398 阅读 · 0 评论 -
二级指针的作用详解
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46629065一、概念在如下的A指向B、B指向C的指向关系中:首先C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。B是一个指针变量,其中存转载 2015-12-06 23:05:44 · 587 阅读 · 0 评论 -
C++中的空指针和野指针
空指针常量一个表示0值的整数常量,叫做空指针常量。例如:0、0L、1-1(它们都是值为0的整数常量表达式)以及(void*)0、void* NULL 都是空指针常量,空指针常量可以赋值给任何指针类型,因为它是变体类型(void*)。但是我们更倾向于使用NULL表示这个空指针常量。对于其它方式(比如0)来表示空指针常量虽然不会产生任何问题,但是在根本意义上并不符合空指针常量的定义。因为空指针转载 2015-12-06 23:47:22 · 1433 阅读 · 0 评论 -
Linux GCC常用命令
1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。转载 2016-02-14 17:15:42 · 446 阅读 · 0 评论 -
C语言字节对齐
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访转载 2016-03-06 22:14:27 · 442 阅读 · 0 评论 -
MIPS 指令集(共31条)
MIPS 指令集(共31条)MIPS 指令集(共31条)助记符指令格式示例示例含义操作及其解释Bit #31..2625..2120..1615..1110..65..0转载 2016-06-30 22:56:28 · 66382 阅读 · 3 评论 -
mips指令简单入门
MIPS Architecture and Assembly Language OverviewMIPS架构及其汇编初步 (开始之前稍微再提下,整体分为4个结构:) 1: 寄存器种类; 2: 算术及寻址指令 3: 程序结构 4: 系统调用 Data Types and Literals数据类型(及字符)Data转载 2016-06-30 23:59:15 · 99468 阅读 · 13 评论 -
express
#include #include #include #include const int Size = 50;char Stack[Size];char SuffixExpression[Size]; /*后缀表达式数组*/int top = -1; /*始终指向栈顶*/int index = 0; /*后缀表达式索引*//*----------------栈原创 2016-07-16 01:05:53 · 534 阅读 · 0 评论 -
KMP模式匹配算法中next[]数组求法
模式T = ″t1 t2 ⋯ tm″中的每一个字符tj 都对应一个k 值, 这个k 值仅依赖于模式本身字符序列的构成, 而与主串无关。用next [ j]表示tj 对应的k 值( 1≤ j≤ m) , 则t1 ⋯ tk - 1 既是t1 ⋯ tj - 1 的真前缀又是t1 ⋯ tj - 1 的真后缀的最长子串, 因此, 将k = next [ j] 称为tj 的前缀函数值翻译 2014-03-23 15:33:24 · 2468 阅读 · 1 评论 -
用两个栈实现一个队列
用两个栈实现一个队列:算法示意图如下#include using namespace std;const int StackSize = 100; //栈容量templateclass SeqStack{public: SeqStack(){ top = -1;} ~SeqStack(){} void Push(T x);原创 2014-04-03 20:38:04 · 881 阅读 · 0 评论 -
深入解析unsigned int 和 int
就如同int a;一样,int 也能被其它的修饰符修饰。除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed----有符号,可修饰char、int。Int是默认有符号的。2.unsigned-----无符号,修饰int 、char3.long------长型,修饰int 、double4.short------短型,修饰int转载 2014-08-27 09:15:24 · 1357 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数转载 2014-08-28 19:25:34 · 738 阅读 · 0 评论 -
计算结构体的大小
目录(?)[+]一什么是字节对齐为什么要对齐二编译器是按照什么样的原则进行对齐的三如何修改编译器的默认对齐值结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体: struct stu1 {转载 2014-08-28 20:41:44 · 629 阅读 · 0 评论 -
C++获取系统时间
//方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ) { time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) )翻译 2014-08-17 09:51:37 · 736 阅读 · 0 评论 -
关于多重循环效率问题
从http://search.csdn.net/Expert/topic/2568/2568192.xml?temp=.0968439搜到的在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。例如示例4-4(b)的效率比示例4-4(a)的高。for (row=0; row row++){ for转载 2014-08-29 09:38:31 · 3944 阅读 · 0 评论 -
理解有符号数和无符号数
1、你自已决定是否需要有正负。 就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。 在计算机中,可以区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型。 (unsigned)数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则转载 2014-08-17 21:18:34 · 1200 阅读 · 0 评论 -
二维数组与指针
二维数组和指针⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。我们知道,一个二维数组在计算机中存储时,是按照先行后列的顺序依次存储的,当把每一行看作一个整体,即视为一个大的数组元素时,这个存储的二维数组也就变成了一个一维数组了。而每个大数组元素对应二维数组的一行,我们就称之为行数组元素,显然每个行数组元素都是一个一维数组。原创 2014-10-09 20:54:55 · 960 阅读 · 0 评论 -
C++强大背后
在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming,转载 2014-10-18 12:28:04 · 703 阅读 · 0 评论 -
int和char
类型转换原创 2017-01-16 00:17:12 · 858 阅读 · 1 评论