<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AC_Gibson的专栏]]></title><description><![CDATA[while(alive)  ACing;]]></description><link>https://blog.youkuaiyun.com/AC_Gibson</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AC_Gibson]]></copyright><item><title><![CDATA[GCC编译详解]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50541280</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50541280</guid><author>AC_Gibson</author><pubDate>Tue, 19 Jan 2016 12:16:37 +0800</pubDate><description><![CDATA[GCC（GNU Compiler Collection--GNU编译器套件）可以编译C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言。GCC原本作为GNU操作系统的官方编译器，现已被大多数类Unix操作系统（如Linux、BSD、Mac OS X等）采纳为标准的编译器，现在GCC同样适用于微软的Windows。
        GCC的编译]]></description><category></category></item><item><title><![CDATA[《C++Primer 5e》学习笔记（6）：类]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50478257</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50478257</guid><author>AC_Gibson</author><pubDate>Thu, 07 Jan 2016 20:24:58 +0800</pubDate><description><![CDATA[1.定义在类内部的函数是隐式的inline函数。
2.成员函数通过this隐式参数来访问调用它的那个对象。当我们调用一个成员函数时，用请求该函数的对象的地址去初始化this。
3.this的目的是总指向“这个”对象，所以默认情况下this的类型是指向类类型非常量版本的常量指针，我们不允许改变this中保存的地址。这也意味着this不能绑定到一个常量对象上，从而导致我们不能在一个常量对象上调用普通的成员函数。C++允许我们把const关键字放在成员函数的参数列表后，以紧跟在参数列表之后的const来表示thi]]></description><category></category></item><item><title><![CDATA[《C++Primer 5e》学习笔记（5）：函数]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50469650</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50469650</guid><author>AC_Gibson</author><pubDate>Wed, 06 Jan 2016 15:58:15 +0800</pubDate><description><![CDATA[1.函数的调用完成两项工作：一是用实参初始化函数对应的形参，二是将控制权转移给被调用的函数。此时，主调函数的执行被暂时中断，被调函数开始执行。
2.函数定义规定了实参与形参存在的对应关系，但是并没有规定实参的求值顺序。编译器能以任意可行的顺序对形参进行求值。
3.函数的返回值不能是数组类型或函数类型，但可以是指向数组或函数的指针。
4.局部静态对象在程序执行路径第一次经过对象定义语句时初始化]]></description><category></category></item><item><title><![CDATA[《C++Primer 5e》学习笔记（4）：语句]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50428302</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50428302</guid><author>AC_Gibson</author><pubDate>Tue, 29 Dec 2015 18:49:16 +0800</pubDate><description><![CDATA[1.表达式语句的作用是执行表达式并丢弃掉求值结果。
2.复合语句（也被称作块）是指用花括号括起来的语句和声明的序列，一个块就是一个作用域。
3.case关键字和它对应的值一起被称为case标签。case标签必须是整型常量表达式。任何两个case标签都不能相同，否则会引发错误。
4.switch执行时如果跳过了某个特定的case，则switch结构中该case标签之前的部分会被忽略掉。
5.]]></description><category></category></item><item><title><![CDATA[《C++Primer 5e》学习笔记（3）：表达式]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50425887</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50425887</guid><author>AC_Gibson</author><pubDate>Tue, 29 Dec 2015 14:40:07 +0800</pubDate><description><![CDATA[1.函数调用也是是一种特殊的运算符，他对运算对象的数量没用限制。
2.C语言中便于记忆有“左值可以位于赋值语句的左侧，右值不能”的说法。在C++语言中，一个左值表达式的求值结果是一个对象或者一个函数，然而以常量对象为代表的某些左值实际上不能作为赋值语句的左侧运算对象。此外，虽然某些表达式的求值结果是对象，但他们是右值而不是左值。可以做一个简单的归纳：当一个对象被用作右值的时候，用的都是对象的值（]]></description><category></category></item><item><title><![CDATA[《C++Primer 5e》学习笔记（2）：字符串、向量和数组]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50402678</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50402678</guid><author>AC_Gibson</author><pubDate>Fri, 25 Dec 2015 14:28:18 +0800</pubDate><description><![CDATA[1.作用域操作符（::）的含义：编译器应从操作符左侧名字所示的作用域中寻找右侧那个名字。当左侧名字为空时即为全局变量。
2.对于using声明：每个名字都需要有独立的using声明，且头文件中不应包含using声明。


3.标准库类型string（string是一个类）需要有头文件#include 和命名空间using
 std::string;
4.getline(is,s)函数的]]></description><category></category></item><item><title><![CDATA[BFPTR算法（中位数的中位数算法）求n个数中第k大的数]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50396425</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50396425</guid><author>AC_Gibson</author><pubDate>Thu, 24 Dec 2015 19:30:51 +0800</pubDate><description><![CDATA[BFPTR算法求n个数中第k大（即第n-1-k小）的数，其思想是基于快速排序中对Partion的pivot值进行优化，快速排序中每一趟快排的pivot的选取一般是数组的首项或者尾项（数值比较随机），而BFPTR是每次选择5分中位数的中位数作为pivot进行下一趟快速排序的，这样做可以使算法的时间复杂度由最坏的O(n^2)变为O(n).
实现代码如下：
#include 
using names]]></description><category></category></item><item><title><![CDATA[《C++Primer 5e》学习笔记（1）：变量和基本类型]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50387429</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50387429</guid><author>AC_Gibson</author><pubDate>Wed, 23 Dec 2015 15:35:25 +0800</pubDate><description><![CDATA[1.类型转换：
（1）当我们赋给无符号类型一个超出它表示范围的值时，结果是初始值对无符号类型表示数值总数取模后的余数。例如，8比特大小的unsigned char 可以表示0到255区间内的值，如果我们赋了270，结果就是270%256=14.
（2）当我们赋给带符号类型一个超出它表示范围的值时，结果是未定义的(undefined)。
2.初始化不是复制，初始化的含义是创建变量时赋予一个初始]]></description><category></category></item><item><title><![CDATA[基数排序]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50382117</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50382117</guid><author>AC_Gibson</author><pubDate>Tue, 22 Dec 2015 20:38:00 +0800</pubDate><description><![CDATA[在基数排序之前，我们先来看一下计数排序：

计数排序是一个非基于比较的排序。它的优势在于对一定范围内的整数排序时，它的时间复杂度为O(n+k)（其中k为整数的范围），快于任何比较排序算法。
计数排序的基本思想就是对每一个输入元素x，确定出小于x的元素的元素的个数，有了这一信息就可以把x归位了。例如，如果数组有6个元素比x小，那么x归为后几位数组中的第7个元素。
实现代码如下：
/*
Au]]></description><category></category></item><item><title><![CDATA[归并排序]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50382046</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50382046</guid><author>AC_Gibson</author><pubDate>Tue, 22 Dec 2015 20:16:06 +0800</pubDate><description><![CDATA[归并排序是多次将两个或两个以上的有序表合并成一个新的有序表。其每趟归并产生的有序区间只是局部有序，也就是说，在最后一趟排序结束前，所有元素不一定归为。
实现代码如下：
/*
Author:Ibsen
Data:2015.12.22
*/
//归并排序:时间O(n*logn),空间O(n),稳定
#include 
#include 
using namespace std;
int R[]={]]></description><category></category></item><item><title><![CDATA[常用排序汇总]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50371758</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50371758</guid><author>AC_Gibson</author><pubDate>Mon, 21 Dec 2015 14:22:25 +0800</pubDate><description><![CDATA[常用排序有：
1.插入排序（直接插入排序，折半插入排序，希尔排序）
2.交换排序（冒泡排序，快速排序）
3.选择排序（直接选择排序，堆排序）
4.归并排序
5.基数排序



/*
Author:Ibsen
Data:2015.12.21
*/
//排序汇总(插入排序(3种),交换排序(2种),选择排序(2种))
#include 
using namespace std;
in]]></description><category></category></item><item><title><![CDATA[哈希表的常用操作：创建、插入、查找、删除]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50371369</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50371369</guid><author>AC_Gibson</author><pubDate>Mon, 21 Dec 2015 13:09:38 +0800</pubDate><description><![CDATA[/*
Author:Ibsen
Data:2015.12.21
*/
//哈希表的创建、插入、查找、删除(保留余数法建表,线性探查法解决哈希冲突哈希冲突)
#include 
using namespace std;
const int M=1000; //定义哈希表最大长度
const int P=13; //保留余数法的除数
typedef struct node
{
    int key;]]></description><category></category></item><item><title><![CDATA[二叉搜索树(BST)的常用操作:建树、插入、查询、删除、排序打印]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50370640</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50370640</guid><author>AC_Gibson</author><pubDate>Mon, 21 Dec 2015 11:02:52 +0800</pubDate><description><![CDATA[/*
Author:Ibsen
Data:2015.12.21
*/
//二叉搜索树:建树,插入,删除,排序输出.
#include 
#include 
using namespace std;
const int M=1000; //数据大小
int A[M]={5,2,1,6,7,4,8,3,9},n=9;
typedef struct node
{
    int key; //关键字]]></description><category></category></item><item><title><![CDATA[二叉树的构造]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50319203</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50319203</guid><author>AC_Gibson</author><pubDate>Tue, 15 Dec 2015 18:44:34 +0800</pubDate><description><![CDATA[我们假设二叉树中每个节点的值都不相同，那么二叉树具有唯一的先序序列、中序序列、后序序列（注意不同的二叉树可能有相同的先序、中序、后序序列）。引入如下两个定理（数学归纳法很容易可以证明，这里不给出证明）：
1.任何n(n≥0)个不同节点的二叉树，都可由它的中序序列和先序序列唯一确定。
1.任何n(n≥0)个不同节点的二叉树，都可由它的中序序列和后序序列唯一确定。

给出二叉树的两个序列，返回]]></description><category></category></item><item><title><![CDATA[二叉树中根结点到某节点的路径（求某结点的所有祖先）]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50315649</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50315649</guid><author>AC_Gibson</author><pubDate>Tue, 15 Dec 2015 15:07:44 +0800</pubDate><description><![CDATA[假设二叉树用二叉链存储结构：
1.对于“找出根结点到叶子节点之间的路径”提供两种不同的算法：用栈辅助的基于后序非递归遍历的算法，和用队列辅助的基于层次遍历的算法。
2.对于某一给定的节点，求出它的所有祖先：递归求解。


具体实现代码如下：
#include 
using namespace std;
const int M=1000;
typedef struct node
{
	c]]></description><category></category></item><item><title><![CDATA[二叉树常用操作（创建、查找、求高度、遍历、打印）]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50313861</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50313861</guid><author>AC_Gibson</author><pubDate>Tue, 15 Dec 2015 12:35:38 +0800</pubDate><description><![CDATA[/*
Author:Ibsen
Data:2015.12.15
*/

//二叉树创建、查找、求高度、7种遍历、打印输出

#include 
#include 
#include 
using namespace std;
const int M=1000; //定义节点最大值

//定义链式存储结构
typedef struct node
{
	char data; //数据元素
	struc]]></description><category></category></item><item><title><![CDATA[Python解析已下载html文件]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50199051</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50199051</guid><author>AC_Gibson</author><pubDate>Sun, 06 Dec 2015 22:22:01 +0800</pubDate><description><![CDATA[离线解析百度百科中的“百度百科”，提取各级标题：

#encoding:UTF-8
#_Author_:Ibsen

import urllib2
from sgmllib import SGMLParser
 
class ListName(SGMLParser):
	def __init__(self):
		SGMLParser.__init__(self)
		self.is_h1=F]]></description><category></category></item><item><title><![CDATA[C++链接MySQL数据库实例应用]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50193969</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50193969</guid><author>AC_Gibson</author><pubDate>Sun, 06 Dec 2015 12:03:23 +0800</pubDate><description><![CDATA[应用需求：将目录表（含有id(编号),tablename(物种表),kind(该表中物种所属的类)等属性））中含有的每个物种表（含有id(编号),name(物种名)等）中所有的物名读出，并插入表keywords（含有id(编号),name(物名),keyword(该物种所属类的编号)）中。
c++实现代码如下：
/*
Author:Ibsen
Date:2015.12.06
*/
#inclu]]></description><category></category></item><item><title><![CDATA[C++链接MySQL数据库查询操作]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50173169</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50173169</guid><author>AC_Gibson</author><pubDate>Fri, 04 Dec 2015 12:17:43 +0800</pubDate><description><![CDATA[查询lybk表中的wordname列：
/*
Author:Ibsen
Date:2015.12.03
*/
#include 
#include 
#include 
MYSQL mysql;
MYSQL_RES *res; //返回行的一个查询结果
MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示，表示数据行的列
MYSQL_FIELD *fd; //]]></description><category></category></item><item><title><![CDATA[windows-VC++6.0环境下C++链接MySQL数据库]]></title><link>https://blog.youkuaiyun.com/AC_Gibson/article/details/50165743</link><guid>https://blog.youkuaiyun.com/AC_Gibson/article/details/50165743</guid><author>AC_Gibson</author><pubDate>Thu, 03 Dec 2015 20:32:31 +0800</pubDate><description><![CDATA[偶然的一次经历，连我都开始玩数据库了，悲催啊.........好了废话不说了，直接进入主题。
      这里我用的是VC++6.0链接数据库：
首先导入链接数据库所需的头文件和库文件：工具(T) ==>选项(O) ==>目录，进入下列界面：




在"Include files"下添加添加头文件include和库文件lib/opt的路径，即图中路径后两行：




然后]]></description><category></category></item></channel></rss>