<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[数据结构和算法]]></title><description><![CDATA[只为数据结构和算法]]></description><link>https://blog.youkuaiyun.com/liyu1006</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liyu1006]]></copyright><item><title><![CDATA[实现一个搜索二叉树]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8742278</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8742278</guid><author>liyu1006</author><pubDate>Sun, 31 Mar 2013 11:02:43 +0800</pubDate><description><![CDATA[先来看代码：
BinaryTree.h
#ifndef _BINARY_TREE_
#define _BINARY_TREE_

class BinaryTree
{
private:
	class Node{
	public:
		Node(int);
		int data_;
		Node *left_;
		Node *right_;
	};
	Node *root_;
	int siz]]></description><category></category></item><item><title><![CDATA[把递归实现的问题转化成栈来实现]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8718800</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8718800</guid><author>liyu1006</author><pubDate>Mon, 25 Mar 2013 20:26:35 +0800</pubDate><description><![CDATA[函数的调用过程，其实就是压栈和出栈，而递归就是自己调用自己，也是压栈和出栈问题，所以，任何递归实现的问题都可以用栈来实现。
#include 
#include 

int func(int n){
	if(n < 1)
		return -1;
	else if(n == 1)
		return 1;
	else
		return n + func(n-1);
}
class Test{
pu]]></description><category></category></item><item><title><![CDATA[归并排序]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8703443</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8703443</guid><author>liyu1006</author><pubDate>Thu, 21 Mar 2013 21:42:19 +0800</pubDate><description><![CDATA[看懂了这段代码，就真的理解了归并排序。
#include 

class MergeSort{
private:
	int *arr_;
	int size_;
	void mergeSort(int *tmp_p, int lowerBound, int upperBound){
		if(lowerBound == upperBound)
			return;
		else{
			int]]></description><category></category></item><item><title><![CDATA[C++虚函数列表]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8686572</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8686572</guid><author>liyu1006</author><pubDate>Mon, 18 Mar 2013 12:25:13 +0800</pubDate><description><![CDATA[C++中的虚函数的作用主要是实现了多态的机制。关于多态，简而言之就是用父类型别的指针指向其子类的实例，然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”，这是一种泛型技术。所谓泛型技术，说白了就是试图使用不变的代码来实现可变的算法。比如：模板技术，RTTI技术，虚函数技术，要么是试图做到在编译时决议，要么试图做到运行时决议。
 
 
关于虚函数的使用方法，我在这]]></description><category></category></item><item><title><![CDATA[全排列]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8683039</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8683039</guid><author>liyu1006</author><pubDate>Sun, 17 Mar 2013 10:49:26 +0800</pubDate><description><![CDATA[全排列在笔试面试中很热门，因为它难度适中，既可以考察递归实现，又能进一步考察非递归的实现，便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了，因此本文对全排列作下总结帮助大家更好的学习和理解。对本文有任何补充之处，欢迎大家指出。

首先来看看题目是如何要求的（百度迅雷校招笔试题）。

用C++写一个函数, 如 Foo(const char *str),]]></description><category></category></item><item><title><![CDATA[浅谈HTTP中Get与Post的区别]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8675259</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8675259</guid><author>liyu1006</author><pubDate>Thu, 14 Mar 2013 21:33:36 +0800</pubDate><description><![CDATA[Http定义了与服务器交互的不同方法，最基本的方法有4种，分别是GET，POST，PUT，DELETE。URL全称是资源描述符，我们可以这样认为：一个URL地址，它用于描述一个网络上的资源，而HTTP中的GET，POST，PUT，DELETE就对应着对这个资源的查，改，增，删4个操作。到这里，大家应该有个大概的了解了，GET一般用于获取/查询资源信息，而POST一般用于更新资源信息。

　　1]]></description><category></category></item><item><title><![CDATA[英文缩写记录]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8661427</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8661427</guid><author>liyu1006</author><pubDate>Mon, 11 Mar 2013 22:28:19 +0800</pubDate><description><![CDATA[NAT的全称是（Network Address Translation），通过NAT可以将内网私有IP地址转换为公网IP地址。一定程度上解决了公网地址不足的问题。
DAL为数据访问层(Data Access Layer)]]></description><category></category></item><item><title><![CDATA[小计算题]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8657310</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8657310</guid><author>liyu1006</author><pubDate>Sun, 10 Mar 2013 22:59:07 +0800</pubDate><description><![CDATA[1. 有两个房间，一间房里有三盏灯，另一间房有控制着三盏灯的三个开关，这两个房间是分割开的，从一间里不能看到另一间的情况。现在要求受训者分别进这两房间一次，然后判断出这三盏灯分别是由哪个开关控制的。

分析：先进有开关的房子，先开A开关，过一段时间关上，再开B开关,然后进入有灯的房子，亮着的灯由B开关控制，用手摸熄灭的两盏灯，热的受A开关控制，剩下的受C开关控制。

2.你让一些人为你工作]]></description><category></category></item><item><title><![CDATA[数组指针]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8655129</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8655129</guid><author>liyu1006</author><pubDate>Sun, 10 Mar 2013 00:23:27 +0800</pubDate><description><![CDATA[#include 

typedef int(*type_t)[5];

int main(){
	type_t tmp;
	int a[5] = {1,2,3,4,5};
	tmp = &a;
	int *p = (int*)(&a+1);
	std::cout << "*(a+1) = " << *(a+1) << std::endl;
	std::cout << "*(p-1) = " <<]]></description><category></category></item><item><title><![CDATA[逆序一个单链表]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8654552</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8654552</guid><author>liyu1006</author><pubDate>Sat, 09 Mar 2013 20:14:20 +0800</pubDate><description><![CDATA[把一个单链表逆序。#include 

typedef struct  node{
	int data;
	struct node *next;
}node_t;

void insert(node_t **head, int data){
	node_t *node = (node_t*)malloc(sizeof(node_t));
	node->data = data;
	node->nex]]></description><category></category></item><item><title><![CDATA[判断单链表是否有环]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8653426</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8653426</guid><author>liyu1006</author><pubDate>Sat, 09 Mar 2013 12:16:39 +0800</pubDate><description><![CDATA[先来看看程序，再解释：

#include 
typedef struct  node{
	struct node *next;
}node_t;

bool IsExitsLoop(node_t *head)
{
	node_t *slow = head;
	node_t *fast = head;     
	while( fast && fast->next )
	{
		slow =]]></description><category></category></item><item><title><![CDATA[有N个大小不等的自然数（1--N），请将它们由小到大排序。]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8648783</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8648783</guid><author>liyu1006</author><pubDate>Fri, 08 Mar 2013 00:15:59 +0800</pubDate><description><![CDATA[要求程序算法：时间复杂度为O(n)，空间复杂度为O(1)。
我看了网上的答案，感觉不正确，现在我自己写出的答案供大家参考。
#include 
#include 
#include 

void sort(int*, int);
int main(){
	int arr[] = {5,9,3,7,4,2,8,6,1,10};
	int n = sizeof(arr)/sizeof(int);]]></description><category></category></item><item><title><![CDATA[C++关键字mutable]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8644484</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8644484</guid><author>liyu1006</author><pubDate>Wed, 06 Mar 2013 23:03:36 +0800</pubDate><description><![CDATA[关键字 mutable 是一个奇怪的修饰符（specifier），它只能够用于一个类的非静态数据成员。下面我将讨论 mutable 的语义和用法，但是首先我要解释一下 C++ 对象模型的一个关键概念。
对象的状态
    一个对象的状态由其非静态数据成员的值构成，因此，修改一个数据成员将会改变整个对象的状态。将一个成员函数声明为 const 能够保证它不会改变对象的状态。
    然而在一些]]></description><category></category></item><item><title><![CDATA[C++编译器会为类添加哪些成员函数]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8624188</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8624188</guid><author>liyu1006</author><pubDate>Thu, 28 Feb 2013 22:52:44 +0800</pubDate><description><![CDATA[一个空的class在C++编译器处理过后就不再为空，编译器会自动地为我们声明一些member function，如果你写 


class Empty{}; 


就相当于： 

class Empty  {  public:      Empty();      Empty(const Empty&);      ~Empty();      Empty& operator=(c]]></description><category></category></item><item><title><![CDATA[求数值型数组的子数组和最大值]]></title><link>https://blog.youkuaiyun.com/liyu1006/article/details/8623848</link><guid>https://blog.youkuaiyun.com/liyu1006/article/details/8623848</guid><author>liyu1006</author><pubDate>Thu, 28 Feb 2013 22:44:21 +0800</pubDate><description><![CDATA[题目：求子数组的最大和
         输入一个整形数组，数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组，每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n) 。

        例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5 ，和最大的子数组为 3, 10, -4, 7, 2 ，因此输出为该子数组的和18 。
分析：]]></description><category></category></item></channel></rss>