<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cr_goforit的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Cr_goforit</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Cr_goforit]]></copyright><item><title><![CDATA[虚基类]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48846353</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48846353</guid><author>Cr_goforit</author><pubDate>Thu, 01 Oct 2015 15:21:03 +0800</pubDate><description><![CDATA[//虚基类主要解决在多重继承时，基类可能被多次继承，虚基类主要提供一个基类给派生类，如：
#include 
using namespace std;
class Base// 声明为基类Base
{
    int nv;//默认为私有成员
public://外部接口
    Base(int n)
	{ 
		nv = n;
		cout << "Member of Base" << endl]]></description><category></category></item><item><title><![CDATA[计算一段字符串中单词的个数]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48755907</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48755907</guid><author>Cr_goforit</author><pubDate>Sat, 26 Sep 2015 22:17:54 +0800</pubDate><description><![CDATA[#include
#include
#include 
#include 
using namespace std;
void CountWords()
{
	//ifstream is("/*打开输入文件*/");
	//ofstream os("/*打开输出文件*/");

	map mp;
	map::iterator it;
	string str;
	getline(cin,str);
]]></description><category></category></item><item><title><![CDATA[vector容器的基本操作（输入和输出）]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48749919</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48749919</guid><author>Cr_goforit</author><pubDate>Sat, 26 Sep 2015 10:34:50 +0800</pubDate><description><![CDATA[#include
#include
#include
using namespace std;
int main()
{
	string word;
	vector text;
	while(cin>>word)//向一个容器中任意添加字符
	{
		if(word=="stop")
			break;
		text.push_back(word);
	}
	vector::iterator it]]></description><category></category></item><item><title><![CDATA[统计文本文件中数字字符出现的次数]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48730251</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48730251</guid><author>Cr_goforit</author><pubDate>Fri, 25 Sep 2015 10:59:02 +0800</pubDate><description><![CDATA[//现有一个文件文本，请写出一个程序，统计该文件中每个数字字符（0~9）出现的次数。
#include
#include
using namespace std;
int main()
{
	ifstream in;//ifstream 读操作的文件类
    in.open("test.txt");//打开文件
    if(!in)//当读取失败
	{
		cout<<"打开文件出错"<<en]]></description><category></category></item><item><title><![CDATA[求正弦函数sin(x)的近似值的多项式求解]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48679901</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48679901</guid><author>Cr_goforit</author><pubDate>Wed, 23 Sep 2015 14:36:49 +0800</pubDate><description><![CDATA[/*已知求正弦 sin(x) 的近似值的多项式公式为：
sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)!  + … 
*/
#include
#include 
void main()
{ 
	int  i; 
	float  x,sum,a,b;  //sum代表和，a为分子，b为分母 
	char s; 
	printf(]]></description><category></category></item><item><title><![CDATA[输入一个已经按升序排序过的数组和一个数字， 在数组中查找两个数，使得它们的和正好是输入的那个数字。]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48601989</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48601989</guid><author>Cr_goforit</author><pubDate>Sun, 20 Sep 2015 20:52:25 +0800</pubDate><description><![CDATA[//题目：输入一个已经按升序排序过的数组和一个数字，
//在数组中查找两个数，使得它们的和正好是输入的那个数字。
#include
using namespace std;

void fun(int num[],int n,int sum)
{
	//定义两个下标
	int i = 0; 
    int j = n - 1;
    int tmp;
    bool solve = fals]]></description><category></category></item><item><title><![CDATA[反转句子（自己写的）]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48600577</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48600577</guid><author>Cr_goforit</author><pubDate>Sun, 20 Sep 2015 20:00:58 +0800</pubDate><description><![CDATA[#include
using namespace std;
void fun(char *begin,char *end)
{
	if(begin==NULL || end==NULL) return;
	while(begin<end)
	{
		int temp = *begin;
		*begin = *end;
		*end = temp;
		begin++;
		end--;
	}
}]]></description><category></category></item><item><title><![CDATA[输入一个字符串，求出该字符串的字符集]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48352999</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48352999</guid><author>Cr_goforit</author><pubDate>Thu, 10 Sep 2015 22:46:50 +0800</pubDate><description><![CDATA[//输入一个字符串，求出该字符串的字符集(去掉已经重复的字符)
#include
using namespace std;
void Characters(char *string)
{
	if(string == NULL)
		return;
	const int tablesize = 256;
	unsigned int hashtable[tablesize];
	for(unsigne]]></description><category></category></item><item><title><![CDATA[荷兰国旗问题]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48347357</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48347357</guid><author>Cr_goforit</author><pubDate>Thu, 10 Sep 2015 18:26:20 +0800</pubDate><description><![CDATA[//题目：将乱序的红白蓝三色小球排成同颜色在一起的小球组（按红白蓝排序），这个问题称为荷兰国旗问题。
//思想：类似于partition过程。利用三个指针，一前begin，一中current,一后end，begin和current都初始
//化指向数组首部，end初始化指向数组尾部。
//current遍历整个数组序列，current指向0时，与begin交换，而后current++,begin+]]></description><category></category></item><item><title><![CDATA[对数组排序，要求相对位置不变]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48345407</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48345407</guid><author>Cr_goforit</author><pubDate>Thu, 10 Sep 2015 16:38:11 +0800</pubDate><description><![CDATA[//题目：给定含有n个元素的数组a，其中包括0元素和非零元素，对数组排序，要求：
//排序后所有0元素在前，所有非零元素在后，且非零元素排序前后相对位置不变,不能使用额外的存储空间。
#include
using namespace std;
void Partition(int a[],int low,int high)//一次快速排序
{
	int i = high+1;
	for(int j]]></description><category></category></item><item><title><![CDATA[快速排序算法（两个指针一前一后逐步向后扫描）]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48345133</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48345133</guid><author>Cr_goforit</author><pubDate>Thu, 10 Sep 2015 16:25:19 +0800</pubDate><description><![CDATA[//快速排序的另一种方法：以最后一个元素为枢轴值，从前往后进行比较，
//那么一次快速排序后，枢轴左边的元素的相对位置不变。
#include
using namespace std;
int Partition(int a[],int low,int high)//快速排序
{
	int x = a[high];
	int i = low -1;
	for(int j = low;j<=high]]></description><category></category></item><item><title><![CDATA[将数组中的大写字母与小写字母分开]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48340663</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48340663</guid><author>Cr_goforit</author><pubDate>Thu, 10 Sep 2015 11:17:08 +0800</pubDate><description><![CDATA[//题目：将数组中的大写字母与小写字母分开（利用快速排序）
#include
using namespace std;
bool isUpper(char a)
{
	if(a>='A' && a<='Z')
		return true;
	else
		return false;
}
bool isLower(char a)
{
	if(a>='a' && a<='z')
		return tr]]></description><category></category></item><item><title><![CDATA[判断一棵二叉树是不是二叉排序树]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48324501</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48324501</guid><author>Cr_goforit</author><pubDate>Wed, 09 Sep 2015 22:11:33 +0800</pubDate><description><![CDATA[//判断一棵二叉树是不是二叉排序树
//思路：二叉排序树的特点是，若左子树非空，则左子树上结点的值均小于根结点的值；
//若右子树非空，则右子树上结点的值均大于根结点的值。所以根据这一特点，可以看出
//二叉排序树的中序遍历是一个递增序列。
#include
#include 
using namespace std;
int prev1 = INT_MIN;
typedef struct BiT]]></description><category></category></item><item><title><![CDATA[求二叉树中结点的最大距离]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48319033</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48319033</guid><author>Cr_goforit</author><pubDate>Wed, 09 Sep 2015 17:22:39 +0800</pubDate><description><![CDATA[//题目：求二叉树中结点的最大距离（距离：为两节点之间边的个数）
//思路：情况A：路径经过左子树的最深结点，通过根节点，再到右子树的最深结点。
//      情况B：路径不经过根节点，而是左子树或右子树的最大距离，取其大者。
//此问题的核心是，情况A和B需要不同的信息：A需要子树的最大深度，B需要子树的最大距离。
//只要函数能在一个节点同时计算及返回这两个信息即可。
#include
us]]></description><category></category></item><item><title><![CDATA[比较两棵旋转的二叉树是否相等]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48312595</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48312595</guid><author>Cr_goforit</author><pubDate>Wed, 09 Sep 2015 10:43:44 +0800</pubDate><description><![CDATA[//递归算法
#include
using namespace std;
typedef struct BiTreeNode
{
	int data;
	BiTreeNode* lchild;
	BiTreeNode* rchild;
	BiTreeNode(int x) : data(x), lchild(NULL), rchild(NULL) {}
};
bool IsEqual(BiTree]]></description><category></category></item><item><title><![CDATA[二叉树遍历的非递归算法]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48311919</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48311919</guid><author>Cr_goforit</author><pubDate>Wed, 09 Sep 2015 10:09:20 +0800</pubDate><description><![CDATA[//二叉树遍历的非递归算法
#include
#include
using namespace std;
typedef struct BiTreeNode
{
	int data;
	BiTreeNode* lchild;
	BiTreeNode* rchild;
	BiTreeNode(int x) : data(x), lchild(NULL), rchild(NULL) {}
};
//先]]></description><category></category></item><item><title><![CDATA[删除环状单向链表中的重复元素的操作]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48296009</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48296009</guid><author>Cr_goforit</author><pubDate>Tue, 08 Sep 2015 20:00:31 +0800</pubDate><description><![CDATA[//题目：编码实现环状单向链表，去除连续的重复元素的操作。
//思路：定义两个指针，其中p是q的前驱，然后逐个遍历，依次删除重复元素。
#include
#include
using namespace std;
typedef struct node
{
	int data;
	struct node *next;
	node(int x) : data(x), next(NULL) {} 
}]]></description><category></category></item><item><title><![CDATA[两个单向链表，判断它们是否相交，若相交，找出它们的第一个公共的结点]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48295295</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48295295</guid><author>Cr_goforit</author><pubDate>Tue, 08 Sep 2015 19:01:47 +0800</pubDate><description><![CDATA[思路：
           首先利用快慢指针判断链表是否存在环。
   （1）如果都不存在环，则如果两个链表相交有公共的结点，即从某一结点开始，它们的next都指向同一个结点。因此我们判断两个链表是不是相交，只要分别遍历两个链表到末尾。如果两个末尾结点是一样的，说明它们相交；否则，两个链表不想交。
        链表相交，如何寻找第一个相交的结点？首先两个链表各遍历一次，求出两个链表的长]]></description><category></category></item><item><title><![CDATA[输出链表时倒数第K个结点]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48295215</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48295215</guid><author>Cr_goforit</author><pubDate>Tue, 08 Sep 2015 18:55:18 +0800</pubDate><description><![CDATA[//输入一个链表，输出该链表中倒数第K个结点
//思路：定义两个指针，第一个指针从链表的头指针开始遍历向前走K-1个，
//第二个指针不变；从第K步开始，第二个指针也开始从链表的头指针开始遍历，
//当第一个指针到达表尾时，第二个指针所指的结点就是倒数第K个结点。
#include
using namespace std;
typedef struct node
{
	int data;
	str]]></description><category></category></item><item><title><![CDATA[快慢指针]]></title><link>https://blog.youkuaiyun.com/Cr_goforit/article/details/48287947</link><guid>https://blog.youkuaiyun.com/Cr_goforit/article/details/48287947</guid><author>Cr_goforit</author><pubDate>Tue, 08 Sep 2015 10:47:51 +0800</pubDate><description><![CDATA[//单链表中的快慢指针：快指针每次沿链表向前移动2，慢指针每次沿链表向前移动1。
//应用1:判断单链表是否存在环
#include
#include
using namespace std;
typedef struct node
{
	int data;
	node *next;
};
bool isLoop(node *head)
{
	node *p = head;//快指针
	node ]]></description><category></category></item></channel></rss>