自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Angel's Love的专栏

Technology sharing,Common progress

  • 博客(24)
  • 收藏
  • 关注

原创 引用计数型智能指针

#includeusing namespace std;templateclass SmartPtr{public: SmartPtr(T *p) :_ptr(p), _pCount(new int(1)) {} ~SmartPtr() { release(); } SmartPtr(SmartPtr &s) { _ptr = s._ptr; _pCount

2015-07-13 09:50:46 433

原创 调整数组使奇数全部都位于偶数前面。

题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。#includeusing namespace std;void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}void change(int *arr, int len)

2015-07-08 09:15:11 541

原创 数组中出现次数超过一半的数字。

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}, 由于数组中数字2出现了5次,超过数组的长度的一半,因此输出2。int MoreThanHalfNum(int *arr, int len){ int ret = 0; int times = 0; int i = 0; for (; i <

2015-07-08 09:06:38 437

原创 字符串的左旋转

题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。要求时间对长度为 n 的字符串操作的复杂度 为 O(n),辅助内存为 O(1)。#include#include#includeusing namespace std;void reverse_str(char

2015-07-07 09:40:10 418

原创 杨氏矩阵的编写

题目:在一个二维数组中,每行都按照从左到右的递增的顺序排序。每列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数。#includeusing namespace std;int find_one_num(int arr[], int rows, int cols, int num){ int find = 0; if (arr

2015-07-07 09:31:36 688

原创 不用+,-,*,/求两个数的和

#includeusing namespace std;int sum(int a, int b){ int ret = 0; while (b) { ret = a & b; a = a ^ b; b = ret << 1; } return a;}int main(){ cout << sum(11, 9) << endl;}

2015-06-30 21:10:38 440

原创 不用任何循环语句和判断句实现1-100的和

int Sum(int n){ n && (n += Sum(n - 1)); return n;}int main(){ cout << Sum(100) << endl;}

2015-06-30 21:07:44 666

原创 直接插入排序、折半插入排序、冒泡排序、快速排序的算法实现

#includeusing namespace std;void InsertSort(int ar[],int n){ for (int i=2; i<n; ++i) { if (ar[i] < ar[i-1]) { ar[0] = ar[i]; for (int j=i-1; ar[j] > ar[0]; --j) { ar[j+1] = ar[j

2015-06-13 08:34:57 1400

原创 二叉搜索树各种算法的实现

二叉搜索树的其他算法相对简单,但是删除相对麻烦。在二叉树中删除一个借点时,必须将因删除结点而断开的二叉链表重新链接起来,同时确保二叉搜索树的性质不会失去。此外,为了保证在执行删除后,树的搜索性能不至于降低,还需要防止重新链接后树的高度不能增加。如果想要删除叶节点,只需将其父结点指向它的指针清零,再释放即可。如果被删结点的右子树为空,可以拿它的左子女结点接替它的位置,再释放它。如果被删结点的左子

2015-05-26 08:12:34 421

原创 全局变量,局部变量,静态全局变量,静态局部变量在内存里的区别

以前容易搞混,今天分享给大家,希望对这些概念模糊的同学有所帮助

2015-05-17 11:28:40 422

原创 类string运算符的重载

基于昨天写的Int运算符的重载,今天又完善了一下Stringl类的运算符重载。代码如下:#includeusing namespace std;class String;ostream& operator<<(ostream &out,const String &s);class String{ friend ostream& operator<<(ostream &out,co

2015-05-12 09:23:06 675

原创 运算符的重载

#includeusing namespace std;class Int;ostream& operator<<(ostream &out,const Int &I);class Int{public: Int(int i = 0):m_i(i) {} ~Int() {}public: friend ostream& operator<<(ostream &out,c

2015-05-11 20:30:25 346

原创 求二进制中1的个数

方法1:对于二进制操作,除以一个2,原来的数字将会减少一个0.除的过程中有余数,那么当前位置有一个1.代码如下:#includeusing namespace std;int Count(int val){ int count = 0; while (val) { if (val%2 ==1) { count++; } val = val /2; } ret

2015-05-09 10:34:35 446

原创 C语言中变量的复杂声明和定义

我们知道:任何C语言变量的声明都由两部分组成:类型以及一组类似表达式的声明符。一旦我们知道如何声明一个给定类型的变量,那么该类型的类型转换符就很容易得到:只需要把声明中的变量名和末尾的分号去掉,再将剩余的部分用一个括号整个“封装”起来即可。例如:float (*h)();表示h是一个指向返回值为浮点类型的函数的指针,所以(float (*)())一个“指向返回值为浮点类型的函数的指针”的类型转

2015-05-08 09:17:51 2172

原创 可变的:按位const和按逻辑const

按位const意思是对象中的每个字节都是固定的,所以对象的每个位映像从不改变。按逻辑const意思是,虽然整个对象从概念上讲是不变的,但是可以以成员为单位改变,当编译器被告知一个对象是const对象时,它将绝对保证这个对象按位的常属性。要实现按逻辑const的属性,有两种由内部const成员函数改变数据成员的的方法。第一种:强制转换常量性:取this(这个关键字产生当前对象的地址)并把强制

2015-04-29 09:57:28 490

原创 文件的打开与关闭

1.C语言实现文件的打开与关闭:#includeusing namespace std;void main(){ int ar[10] = {1,2,3,4,5,6,7,8,9,10}; FILE *fp; fp=fopen("Test1.txt","w"); if(fp == NULL) { cout<<"open file fail!"<<endl; exit(

2015-04-29 09:31:25 424

原创 给定一个十进制的整数,写下从1开始到N的所有整数,计算其中出现的所有"1"的个数

#includeusing namespace std;int Sum1s(int n){ int count = 0; //记录1的个数 int factor = 1; //标记,逐位计算1的个数 int LowerNum = 0; int CurrNum = 0; int HigherNum = 0; while ( n/factor != 0) //每次

2015-04-14 16:11:09 1731

原创 哈希表的线性探查法搜索算法

#include#includeusing namespace std;const int P = 7;const int DefaultSize = 7;enum KindOfStatus{Active,Empty,Deleted};class HashTable{public: HashTable(const int d,int sz = DefaultSize) {

2015-04-14 16:06:59 1474

原创 最小堆问题

最小堆的概念:所有父节点的值小于或等于两子节点的值,并且它所有元素按完全二叉树的顺序存储方式存放在一个一维数组中。如图:关于堆的操作:1.建立最小堆:将普通数组转换成堆,转换完成后,数组就满足最小堆的特性,即所有父节点的值小于或等于两个子节点.具体实现:templateclass MinHeap{public: MinHeap(size_t sz = D

2015-03-28 17:16:53 939

原创 字符串的拷贝

方法一:#include#includevoid my_strcpy(char *dest,char *src){ while('\0'!= *src) { assert(src); assert(dest); *dest=*src; src++; dest++; } *dest='\0';}void main(){ char *p="abcde

2015-02-08 11:27:35 620

原创 求1!+2!+3!+......+10!的和。

方法1:#includeint main(){ int i; int sum = 0; int n =1;//存储上一个数阶乘的结果 for(i = 1; i <= 10; i++) { n=i*n; sum =sum+n; } printf("sum = %d\n",sum); return 0;}方法2:#includei

2014-12-30 17:20:53 878

原创 计算1~100的所有整数中出现多少次数字9

#includeint main(){ int i; int count=0;/*计数器,计算出现9的个数*/ for(i=1;i<=100;i++) { if(i%10==9 || i>=90) { count++; } } printf("出现9的次数为:%d\n",count); return 0;}程序虽

2014-12-27 21:35:47 522

原创 Exercise

1.输出1000~2000之间的闰年#includeint main(){ int year; printf("以下输出为闰年:\n"); for(year=1000;year<=2000;year++) { if(year%4==0 && year%100!=0 || year%400==0) { printf("%d ",year

2014-12-26 20:33:41 415

原创 My first blog

C语言的编程历程

2014-12-21 21:32:01 606 1

空空如也

空空如也

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

TA关注的人

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