- 博客(24)
- 收藏
- 关注
原创 曾经遇到的一个面试题,快速排序用链表实现,算法和以前的相似,需要注意一些细节处理
typedef struct nodes{ int data; struct nodes * next;} node;void add_node(node *first,int data){ node * tmp; if (first != NULL){ tmp =(node *) malloc(sizeof(node)); if (tmp != NULL) { tm
2012-08-31 14:37:54 404
原创 如何编写一个安全的read函数
ssize_t safe_read(int fd, void *buf, size_t count){ ssize_t n; do { n = read(fd, buf, count); } while (n < 0 && errno == EINTR); return n;}我们大多知道在使用read函数时,返回0表示读到文件的末端,返回值大于1表示读到文件的字节数,如果
2012-07-24 15:24:51 879
原创 自律
如何自律: 推迟满足感:对于自己,不要有拖拉的做事习惯,集中注意力,把重要的、困难的工作在最短的时间内解决掉,比如每天工作的时间内,开始上班的时候就将工作时间做一个规划,把困难的工作放在开始。 承担责任:像个男人可以把自己的责任承担起来,在遇到困难时,逃避困难只是带来一时的轻松,困难不会随着自己的逃避而消失,正相反,一个勇敢的人,往往会因为能够克服困难带来更高等级的愉悦。生
2012-07-09 14:59:28 295
原创 数据对齐
char wolf[]="Like a wolf";char *p = &wolf[1];unsigned long l = *(unsigned long *)p;此实例试图从一个并不能指向被4或8整除的地址上载入一个32位或64位的unsigned long 类型的数据可能会引起错误,在一些平台上访问没有对齐的数据会陷入一种错误
2012-06-19 17:18:30 303
原创 数组和指针寻址
本节讲述的是指针是如何汇编的。1:数组和字符数组是如何保存的先来看看C语言源码#includeint main(){ int int_a[5]={1,2,3,4,5}; char char_a[] = "hello world"; char * char_pa = "hello world";}以下是汇编后的代码; File d:\ѧ
2012-04-26 23:02:20 7655
原创 第七章 变量的位置
本文介绍C/C++中变量存储的位置:包括 全局变量,静态局部变量,堆变量#includeint g_variable1 = 12345;int g_variable2 = 45678;int main(){ int one =1,two =2; scanf("%d,%d",&one,&two); printf("%d,%d\n",one,two); scanf("%d,%
2012-04-24 23:31:57 416
原创 第六部分 函数的工作原理一
写这篇文章得益于我最近钱林松、赵海旭写的新书《C++反汇编与逆向分析》,一直希望学习相关的技术,但是一直没有开始,看到此书后,激发起了我以前的兴趣,最近一直在读这本书,今日将我了解到的知识分享给大家。首先让我们来看一段最简单的代码#includevoid func(int first, int second){}int main(){int first =
2012-04-24 10:38:04 523 2
原创 tr的使用
本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。===[正文开始]tr是translate的简写,亦即翻译,但是
2011-07-31 19:32:03 443
原创 POJ 3264
<br />动态规划解决方案,<br /> <br />#include<iostream>#include<cstring>#include<cmath>#include<cstdio>using namespace std;const int maxn=50005;const int maxi=17;int height[maxn];int min_height[maxn][maxi];int max_height[maxn][maxi];int M,N;
2011-06-02 10:50:00 479
原创 Dijkstra
<br /><br />Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。<br />其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。<br />初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路长度的顶点u
2011-05-30 20:31:00 342
原创 顺序排序
<br /><br />#include<iostream><br /> <br />int partion(int a[], int s, int e)<br />{<br />int key = a[s];<br />int temp ;<br />while (s < e) {<br />while ( s < e && a[e] >= key) e--;<br /><br />if ( s < e ) <br />a[s++] = a[e]; <br /><br />while ( s < e &
2011-03-13 22:07:00 294
原创 动态规划背包问题自己的理解:
<br /> <br />01背包问题的最优子问题是:<br />f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}<br />已知前i-1件商品的最优化结果;那么在添加第i件商品时的最优化结果可以由上式表示。<br />多重背包 :转化为01问题<br />另一种好想好写的基本方法是转化为01背包求解:把第i种物品换成n[i]件01背包中的物品,则得到了物品数为Σn[i]的01背包问题,直接求解,复杂度仍然是O(V*Σn[i])。<br />但是我们期望将它转化为01背包
2011-03-05 14:57:00 706
原创 微软等数据结构+算法面试100题解答018
<br /><br />核心思想:<br />如果只有一个人;则他就是胜利者;<br />n-1个人的胜利者在n个人中的排序为 (x +m)% n (1)<br />迭代或递归即可得出从1 到 n 个人的胜利者序号<br />例 n =4 m =3<br />i = 1 胜利者序号为 0<br />i = 2 胜利者在两个人的排序 由(1)式可知 变为 (0 + 3) % 2 = 1 所以 两个人中的 第二个人会获得最终的胜利。。<br />...<br />...<br /> <br />#in
2011-01-28 09:58:00 335
原创 字符串匹配 KMP
<br /><br />#include<iostream><br />#define LENGTH 9<br /> <br />char data[]="acabaabaabcacaabc";<br />char comp[]="abaabcac";<br />int pre[8];<br /> <br />void Compute_Prefix_Function()<br />{<br /> int p=0;<br /> pre[0]=0;<br /> for(int i = 1;
2011-01-26 23:53:00 293
原创 微软等数据结构+算法面试100题014
<br /><br />/*<br />*<br />* 题目:输入一个已经按升序排序过的数组和一个数字,<br />* 在数组中查找两个数,使得它们的和正好是输入的那个数字。<br />* 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。<br />* 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。<br /> <br />* 思路:类似快排的partion 部分 从两边开始向中间找<br /> 比如有如下数组输入数组1
2011-01-22 19:17:00 296
原创 精选微软等公司经典的算法面试100题009
<br /><br />#include <iostream><br /> <br />int findFirstBig(int data[],int start, int end)<br />{<br />int key = data[end];<br />int i = start ;<br />while( i < end && data[i] <= key )<br />i++;<br />if ( i != end ){ //find<br />return i;<br />}<br />re
2011-01-21 23:25:00 346
原创 微软等数据结构+算法面试100题005
<br /><br /> <br />#include <iostream><br /> <br />void downHeap(int heapArray[], int lengtArray, int key)<br />{<br />int temp = key;<br />int flag = 0;<br />int maxkey ;<br />while ( temp <= (lengtArray-2) / 2 ) { <br />if ( temp*2 + 2 <= lengtArray -1 )
2011-01-20 19:44:00 281
原创 微软等数据结构+算法面试100题019
<br /><br />#include <iostream><br /> <br />int Fibonacci(int n)<br />{<br />if ( n == 0) {<br />return 0 ;<br />}<br />if ( n == 1) {<br />return 1 ;<br />}<br />int first = 0 ;<br />int second = 1 ; <br />int third ;<br />for (int i = 2 ; i <= n ; i++)
2011-01-19 21:53:00 419
原创 微软等数据结构+算法面试100题004
<br /><br />#include <iostream><br />typedef struct BinaryTreeNode // a node in the binary tree<br />{<br />int m_nValue; // value of node<br />BinaryTreeNode *m_pLeft; // left child of node<br />BinaryTreeNode *m_pRight; // right child of node<br />}BTNod
2011-01-19 21:32:00 312
原创 动态规划1——之工厂生产线问题
<br /><br />#include <iostream><br />#define LINELENGTH 6<br /> <br />int line_1[] = {7, 9, 3, 4, 8, 4} ;<br />int line_2[] = {8, 5, 6, 4, 5, 7} ;<br />int time_1[] = {2, 2, 1, 2, 2, 1} ;<br />int time_2[] = {4, 2, 3, 1, 3, 4} ;<br />int best_line_1[6] = {
2011-01-19 00:18:00 1149
原创 微软等公司数据结构面试题3
#include class Array{public:Array(int a[],int length):m_array(a),m_length(length) {}void Findbest();void Print();private:int *m_array;int m_left;int m_right;int m_length;int m_nearLeft;int m_nearRight;int m_max;int m_nearMax;};void Array::Findbest(){m_lef
2011-01-19 00:01:00 444
原创 微软等公司数据结构面试题1
tree.htypedef struct BSTreeNode {int m_value;struct BSTreeNode *m_left ;struct BSTreeNode *m_right;} bstTreeNode;class ActTree{public:ActTree();void InsertValue() ;void DeleteValue() ;void Sort();void PrintTree();void PrintNode(bstTreeNode *node);void C
2011-01-17 19:51:00 344
原创 我的排序算法
复杂度为n2的算法/* 冒泡排序 * input int数组 length of 数组 * 输出 在int数组上原地排序 */void bubble(int a[], int n){ int i,j,temp; for (i = 0; i for ( j= n - 1; j > i; j-- ) { if (a[j] temp = a[j-1];
2010-12-30 10:44:00 254
原创 C++传参数的时关于引用和传值
在数据结构设计中,经常会在已有的数据结构上进行修改,在初学者学习的时候常常会发现创建的数据结构不听指挥,在调试时发现明明设置了关键字的值,但是在另一个函数中调用的时候则无法调用,比如下面l两段不同的代码.void insert(Tree &tree, node * t){ if (tree.empty){ tree.empty = false; tree.root = t; return ; } //node * parent = tree.r
2010-12-29 15:52:00 384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人