C++
GHX05130319
这个作者很懒,什么都没留下…
展开
-
类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 阅读 · 0 评论 -
字符串的左旋转
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。要求时间对长度为 n 的字符串操作的复杂度 为 O(n),辅助内存为 O(1)。#include#include#includeusing namespace std;void reverse_str(char原创 2015-07-07 09:40:10 · 418 阅读 · 0 评论 -
杨氏矩阵的编写
题目:在一个二维数组中,每行都按照从左到右的递增的顺序排序。每列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个数组和一个数,判断数组中是否包含这个数。#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 阅读 · 0 评论 -
引用计数型智能指针
#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 阅读 · 0 评论 -
直接插入排序、折半插入排序、冒泡排序、快速排序的算法实现
#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 阅读 · 0 评论 -
不用+,-,*,/求两个数的和
#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 阅读 · 0 评论 -
不用任何循环语句和判断句实现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 · 667 阅读 · 0 评论 -
数组中出现次数超过一半的数字。
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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 阅读 · 0 评论 -
二叉搜索树各种算法的实现
二叉搜索树的其他算法相对简单,但是删除相对麻烦。在二叉树中删除一个借点时,必须将因删除结点而断开的二叉链表重新链接起来,同时确保二叉搜索树的性质不会失去。此外,为了保证在执行删除后,树的搜索性能不至于降低,还需要防止重新链接后树的高度不能增加。如果想要删除叶节点,只需将其父结点指向它的指针清零,再释放即可。如果被删结点的右子树为空,可以拿它的左子女结点接替它的位置,再释放它。如果被删结点的左子原创 2015-05-26 08:12:34 · 421 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面。
题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。#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 阅读 · 0 评论