- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 Xpath问题总结
1.什么是xpathXpath使用路径表达式在XML文档中进行导航,解析到路径跟踪到的XML元素。2.xpath路径表达式路径表达式是xpath的传入参数,xpath使用路径表达式对XML文档中的节点(或者多个节点)进行定位。路径表达式类似这种:/html/body/div[@class=”content”] (稍后解释规则)3.路径表达式有如下几种常见的组
2014-07-16 09:57:38 7781
原创 公有云和私有云
这篇700字雄文是我走在知识可读化大道上的一个牺牲品。俗称垫脚石。公有云和私有云是云服务存在的两种方式(还有混合云)。公有云是第三方提供的服务,而私有云是企业内建的供企业自身使用的云服务。打个比方,公有云是公交车,私有云是私家车,公私分明主要体现在如下几点:1.服务方就像公交车,公有云为很多企业和个人服务,只要买票,皆可上车。花了钱就可以买到第三方提供的云服务。而私有云,只为企
2014-07-15 21:37:06 1416
转载 IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
此文为转载文章。原博地址:http://blog.csdn.net/historyasamirror/article/details/5778378#comments当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link
2013-09-05 13:20:01 555
原创 给出后序遍历(先序遍历结果)和中序遍历结果求先序遍历结果(后序遍历结果)
#include using namespace std; void pos(char* inorder, char* preorder, int length) { if(length == 0) return; char c = *preorder; int rootIndex = 0; for(;rootIndex < length; ro
2013-04-10 17:59:28 960
转载 freopen函数
转载自:http://www.slyar.com/blog/c-freopen-stdin-stdout.html原文标题:C语言文件输入/输出ACM改进版(freopen函数)文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。昨天发了一篇《C语言 使用文件输入/输出数据》,使用的是最普通的文件输
2013-03-31 19:11:25 601
原创 C++笔记6 类和复制控制部分
1.类可以没有成员,需要注意的是类的成员可以是型别名。2.构造函数应该使用一个构造函数初始化列表,来初始化对象的数据成员。针对这一条,多说几句。首先,初始化列表可以将成员变量直接初始化。其次,有些数据成员必须要从初始化列表中初始化。从概念上讲,构造函数分两个阶段执行,1初始化阶段;2普通的计算阶段,计算阶段由构造函数体中的所有语句组成。不管成员是否在构造函数的初始化列表显示初始化,类类型的数据
2013-03-31 17:08:23 589
原创 c++笔记5
1.泛型算法中,所谓泛型,指的是两方面:这些算法可以作用于各种不同的容器类型,而这些容器又可以容纳多种不同的类型的元素。2.为容器类型提供通用接口是设计库的目的!容器提供了不同的性能折衷方案,可以改变容器类型对优化系统性能来说颇有价值。通常不需要修改代码,只需改变类型声明,用另一种容器代替即可优化程序的性能。3.三种顺序容器和三种容器适配器:vector,list,deque;stack,
2013-03-26 22:00:05 500
原创 括号配对
#include #include #include using namespace std; bool isLeftSeq(char c);bool isValidSeq(string input);bool isCom(char c1, char c2);int main() { string str = "{[{()[]}]}([])"; bool bl =
2013-03-25 22:15:19 512
原创 C++笔记4
1.标准库管理输入输出缓冲区的机制不讨论。2.IO对象不可复制或赋值。类和继承的部分会阐述具体原因。后面也会看到vector等容器中不能存放流对象也是这个原因。3.对IO对象的读写会改变它的状态所以引用必须是非const的。4.IO标准库管理一系列的条件状态,后面会知道,这些状态的处理与流的处理应该是密不可分的,要时刻注意对这些状态的修改。无错状态才可以读写,检测也很简单,if(cin
2013-03-21 12:31:18 493
原创 C++笔记3
1.throw表达式:throw语句应用了一个表达式,runtime_error类型是标准库异常类的一种,在stdexcept头文件中定义。2.try块:每个catch字句包括三部分,关键字catch,圆括号内单个类型或者单个对象的说明以及通常用花括号括起来的语句块。try块也引入局部作用域。3.寻找处理代码的过程与函数调用链相反。如果不存在处理该异常的catch字句,程序的运行就要跳转到
2013-03-21 11:56:04 583
原创 字符串计数排序
void count_sort(char *s1, char *s2){ int index; int pos; int help[26] = {0}; int i; for(i = 0; i < strlen(s1); i++){ index = s1[i] - 'a'; help[index]++; } for(i = 1; i < 26; i++)
2013-03-20 17:20:21 773 1
原创 进程,线程
http://blog.csdn.net/danforn/article/details/2464755这个链接是看到的关于线程和进程区别的一个博文。http://en.wikipedia.org/wiki/Thread_safety这个是关于线程安全的一个链接。
2013-03-19 22:00:15 498
原创 C++笔记2
1.最重要的两个标准库类型:string, vector。2.字符串字面值与标准库不是同一类型,编程时要区分字面值和string数据类型的使用。3.string类型的输入操作符:读取并忽略开头所有的空白字符;读取字符直至再次遇到空白字符。4.getline函数接受两个参数,一个是输入流对象,一个string对象。由于getline函数返回时丢弃换行符,所以换行符将不会存储在string
2013-03-19 21:33:46 558
原创 C++笔记
1.endl是一个特殊值,称为操纵符(manipulator),将它写入输出流时,刷新设备相关的缓冲区。所以在调试的时候如果采用插入输出语句的方式的话,一定要刷新缓冲,否则不会立即看到结果。2.C++设计的主要焦点是使所定义的类类型的行为可以像内置类型一样自然。3.大多数现代程序设计语言都采用两种方式扩充基本特征集,允许程序员通过自己定义数据类型扩展该语言和提供库。4.将负数赋值给un
2013-03-19 19:02:08 568
原创 大数运算 (C++)
#include #include using namespace std; char num[4][100];char s[100];int main() { void swi(); void clear(char *s); void add(char *s1, char *s2, char *s); while(cin>>num[0]>>num[1]>>num[2]
2013-03-17 16:19:03 610
原创 树的遍历 非递归
之前写过一个层序遍历的笔记,今天写了下前中后序遍历#include #include #define SIZE 20typedef struct Node *n_pointer;typedef struct Node{ n_pointer left; n_pointer right; int key;};int top = -1;//init stack
2013-03-09 12:17:09 465
原创 基础数据结构之图二
参考了书上的算法描述,写下来的prim,kruskal,AOV网络拓扑排序等的图相关的基础算法。做了一些注释1.拓扑排序的如下:#define MAX_VERTICESstruct node{ int vertex; struct node *link;};typedef struct{ struct node *link; int count;//入度}hnode;//链
2013-03-01 23:10:14 364
原创 编程小技巧&&一些问题
1.SWAP的通用版本#define SWAP(x,y,t)((t)=(x), (x)=(y), (y)=(t))测试用例,两个int值交换 int t; int a = 4; int b = 5; SWAP(a,b,t);2.对字符串数组的初始化。如果有结构体如下struct node{ char key[5]; ...};ty
2013-02-28 22:42:13 373
原创 基础数据结构之图
用c实现了图的部分操作(存储方式为邻接表,邻接矩阵请移步之前文章 :图的邻接矩阵实现c语言版)。参考文献:Fundamentals of Data Structures in C请看代码和注释:#include #include #include #define MAX_VERTICES 10 //最大顶点数量#define TRUE 1#define FALSE 0#de
2013-02-27 23:11:43 363
原创 稀疏矩阵的快速转制
学习的过程中遇到的稀疏矩阵的快速转制的一个小结,贴在这里。1.稀疏矩阵?http://baike.baidu.com/view/891721.htm 百度百科的链接。2.稀疏矩阵的存储和数据结构的具体代码如下: 用三元组的形式存储稀疏矩阵:每个元素的描述需要三方面的信息,(1)所在列col;(2)所在行row;(3)值value typedef struct{ int co
2013-01-21 21:36:21 658
原创 找到字符串中最长单词
#include #include #include int main(){ int count = 0; int max = 0; char *c; char tok[] = {',','.',' '}; char temp[] = "hi i am your friend"; char* p = strtok(temp, tok); if(p) { count =
2012-12-08 20:22:02 1050
原创 对优先队列的一些想法--笔记贴
先明确,优先队列的基本需求:访问最小元素。插入和删除的速度也要足够。可以作为选择的数据结构:1.链表。链表可以保证常量时间在表头插入,但是删除需要遍历链表。如果保持链表是排序的,即在插入的时候做些手脚,那么会使得插入操作时遍历链表,时间又上升到了O(N)。暂时弃之。2.二叉搜索树。可以使得时间复杂度为O(logN),但是不够随机的情况之下,会使得时间复杂度变为O(logN),这时候的树
2012-11-29 13:29:18 424
原创 一道Google面试题的新解法探索
原题就是找出字符串中第一个不重复的字符。如,输入abaccdeff返回的应该是b#include #include using namespace std;char* first_once_letter(char* input){ char* p1 = input; char* p2 = input; const int hash_size = 255; int ha
2012-11-27 22:53:13 399
原创 图的邻接矩阵实现----修正版
上次的那个邻接矩阵的实现点击打开链接没有给出print()函数等,这次都加上了,测试了,可以了。草草结束,写完邻接表和多重表之后再整合一下。:)#include #include #include using namespace std;const int MaxSize = 12;template class Graph{private: list vertexList;
2012-11-27 21:46:44 492
原创 图的邻接矩阵实现
先写这么多,明天给例子和邻接表实现 #include #include #include using namespace std;const int MaxSize = 12;template class Graph{private: list vertexList; int edge[MaxSize][MaxSize]; int numofVertex, numofA
2012-11-26 20:19:52 516
原创 今日总结11_24
1.为什么拷贝构造函数的参数必须是引用。我觉得这个和结构体中的本类型指针成员有异曲同工的意思,不多说,这个blog分析的够了。点击打开链接2.背诵一下异常的定义:异常是存储了正常返回至信息序列以外的发送信息的对象,用于表示异常情况,如错误等。3.Functor的新理解,明天写下来,先写个题目。4.最大子序列和的时间复杂度O(n*logN)的实现,同上。5.把堆栈符号匹配写完整,同上
2012-11-24 22:52:51 293
原创 一道简单的面试题:字符串转换成整数(修正版)
上一次写的那个没有考虑输入的字符串有正负号的问题,如果正号,直接从下一个字符开始,负号的话,记录下来,最后的数转换成负数即可。另外,需要注意的还有两点:1.字符串表示的数字可能很大,所以注意溢出问题。2.字符串的合法性问题。这两点,在程序中没有考虑。代码如下:#include using namespace std;int num = 0;int e10 = 1;void
2012-11-24 22:14:25 466
原创 Fibonacci数列的实现
第一种是课本上的遍历和课本上的递推。第三种,O(logn)的,请看july同志的blog.需要注意的是这个数列的某一项的值可能很大,所以尽量,尽量做好防溢出的准备。#include #include using namespace std;long int fob(int n){ if (0 == n) return 0; else if(1 == n || 2
2012-11-24 21:51:50 400
原创 树的先序遍历迭代版本(修改版)
针对之前写的那个前序遍历,修改了一下。思路和按层遍历是一样的(看别人的文章获悉这两个遍历思路一样,写完代码才发现,的确一样)因为顺序是根---->右孩子---->左孩子,所以,先输出(或者是其他的处理)根,然后将右孩子和左孩子分别入栈,每次出栈的节点只有一个,所以出栈之后的节点再将它的右孩子左孩子分别入栈。。。(就是递归版本的运行时栈情况)#include #include usin
2012-11-24 20:47:02 700
原创 树的层遍历 重新修改
昨天的上传的是之前没改好的,新改的没保存,重新写的,暂时无错了。#include #include using namespace std;struct BSTNode{ int value; BSTNode* left; BSTNode* right; BSTNode() { value = 0; left = NULL; right = NU
2012-11-24 19:53:15 318
原创 树(此处以二叉搜索树为例)的按层遍历 更改版本
#include #include using namespace std;struct BSTNode{ int value; BSTNode* left; BSTNode* right; BSTNode() { value = 0; left = NULL; right = NULL; }};deque sq;void insert
2012-11-23 22:35:05 609
原创 二叉树二度节点和叶子节点的数量关系
二叉树二度节点和叶子节点的数量关系:假设共有节点 N 个, 二度几点 x 个,一度节点y个, 则叶子节点个数(设为z)?N个节点,那么共有树枝N - 1个1个二度节点有2个树枝,叶子没有,一度节点有1个,那么推导出一共有 2x + y 个2x + y = N - 1;x + y + z = N; 由以上两式得出,z = x + 1;完毕。
2012-11-22 22:35:40 26642
原创 二叉树节点推导既二度节点和叶子节点的数量关系
二叉树二度节点和叶子节点的数量关系:假设共有节点 N 个, 二度几点 x 个,一度节点y个, 则叶子节点个数(设为z)?N个节点,那么共有树枝N - 1个1个二度节点有2个树枝,叶子没有,一度节点有1个,那么推导出一共有 2x + y 个2x + y = N - 1;x + y + z = N; 由以上两式得出,z = x + 1;完毕。
2012-11-22 22:34:51 2028
原创 找到单链表的后数第k个节点
看到一个面试题,简单的,才下手做的。返回单链表的第k个节点(给出了尾指针),跟那个步长分别为一为二找到中间和最后的那个差不多。就是定义两个指针,都指向head,然后一个向后移动k步,再同时移动,到达尾巴即可。代码如下,望不吝赐教!#include using namespace std;typedef int ElemType;class linkList{public
2012-11-22 21:58:34 546
原创 BST(或者普通树)的前序遍历迭代版本
这个版本是自己写的,有个明显bug,漏掉了一种情况。void preorder(BSTnode* root){ BSTnode* p = root; st.push(p); while(!st.empty()) { while(p) { cout m_value << endl; if(p->m_right) st.push(p->m_right);
2012-11-21 23:15:41 552
原创 一道简单的面试题:输入字符串,转换成整数输出。
例如,输入字符串345,输出为整数345.题目不难,代码如下。两个版本,第一个是迭代的,第二个是递归的。#include using namespace std;int num = 0;int e10 = 1;void strToNumIte(char* input){ while(*input) { num *= 10; num += (*input - '0'
2012-11-21 15:14:53 657
原创 BST(或者普通树)的中序遍历非递归版本
写了一下中序的迭代版本。用了昨天的BST测试了一下。对栈的使用得深刻理解。void inorder(BSTnode* root){ BSTnode* p = root; sq.push_back(p); p = p->m_left; while(!sq.empty()) { while(p) { sq.push_back(p); p = p->m_left;
2012-11-19 23:06:57 1828
原创 BST(二叉搜索树)按层遍历
这个是很快的一个充满bug的版本,很快会更新。按层遍历。举个例子: 这个BST的话,输出应为1,2,3,4,5,6,7利用了STL的deque,代码如下:#include #include using namespace std;struct BSTNode{ int value; BSTNode* left; BSTNode* right; BST
2012-11-18 20:32:17 772
原创 BST(二叉搜索树)变成双向链表
刚接触到这个题目,先想到的是中序遍历解决。void inorder(BSTnode* p){ if(p == 0) { return; } if(p->m_left != 0) { inorder(p->m_left); } //convert(p); if(p->m_right != 0) { inorder(p->m_right); }}思路比较
2012-11-17 18:22:30 759
原创 子数组最大和
看到的一个面试题。有很多人已经写过,在此记下,明天给出拓展。题目:输入一个整型数组,数组里有正数也有负数,数组中连续的一个或多个整数组成为子数组,求有最大和的子数组。要求:时间复杂度O(n)。代码如下:#include using namespace std;int main(void){ int Max_SubArr(int a[], int size); int a[
2012-11-17 17:53:56 331
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人