自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

转载 自我实现strcpy,memcpy函数

[cpp] view plaincopy// 字符串处理函数.cpp : 定义控制台应用程序的入口点。  //    #include "stdafx.h"  #include   using namespace std;  //编程实现strcpy  char* strcpy(char* strDest,const char *strSrc){     if (strDest==

2012-06-25 11:16:37 425

转载 不是用它printf,将十进制数以二进制和十六进制的形式输出

//不是用它printf,将十进制数以二进制和十六进制的形式输出#include "stdafx.h"#include using namespace std;//将十进制转换为2进制char *get2string(long n){char b[20];static char a[20];int i,j=0;while (n)//取个位的数值{

2012-06-25 11:14:30 592

转载 不使用库函数将整数转换为字符串或将字符串转换为整数

[cpp] view plaincopy不使用库函数将整数转换为字符串  [cpp] view plaincopy// 字符串处理函数.cpp : 定义控制台应用程序的入口点。  //    #include "stdafx.h"  #include   using namespace std;  //不使用库函数将整数转换为字符串  void in

2012-06-25 11:06:40 974 2

转载 指针加减操作

[cpp] view plaincopyint a[5]={1,2,3,4,5};  int *ptr=(int *)(&a+1);  coutcout 答案:25分析: 对指针进行加1操作,得到的是下一个元素的地址,而不是原有地址值直接加1,所以,类型为t的指针的移动是以sizeof(t)为移动单位。ptr是一个int型的指针(&a+1)。

2012-06-25 11:04:27 377

转载 删除两个双向循环链表的相同节点

转载自:http://blog.csdn.net/zhuimengzh/article/details/6803950有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一个函数将两链表中数值相同的节点删除。分析:(1) 首先把A中含有与B中相同的数据节点找出来组成一个新的链表,例如:链表A:1 2 3 4 2 6 4链表B:10 20 3 4 2 1

2012-06-25 10:46:17 1170

转载 找出单链表的倒数第n个元素

这道题目有两种算法,但无论哪种算法,都要考虑单链表少于n个元素的情况。这里假设要寻找倒数第4个元素。    第1种算法,建立两个指针,第一个先走4步,然后第2个指针也开始走,两个指针步伐(前进速度)一致。Java代码  static Link GetLast4thOne(Link head) {       Link first = head;       Link s

2012-06-25 10:32:52 753

转载 找出单链表的中间元素

算法思想:使用两个指针first和second,只是first每次走一步,second每次走两步,这样当second达到链表尾部时,first刚好在链表的中间。Java代码  static Link GetMiddleOne(Link head) {       Link first = head;       Link second = head;       while

2012-06-25 10:29:54 668

转载 单链表反转

这道题目有两种算法,既然是要反转,那么肯定是要破坏原有的数据结构的: 算法:我们需要额外的两个变量来存储当前节点curr的下一个节点next、再下一个节点nextnext:public static Link ReverseLink1(Link head){     Link curr = head.Next;     Link next = null;     L

2012-06-25 10:27:35 381

原创 Stagefright的编码流程

2012-06-20 13:25:19 862

转载 关于C++ const 的全面总结

C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用   如下表所示:No.作用说明参考代码

2012-06-19 13:41:10 434

转载 windows 和linux 回车符号转换问题

修改回车换行Windows中的换行符为CRLF, 即正则表达式的rn(ASCII码为13和10), 而Unix(或Linux)换行符为LF, 即正则表达式的n. 在Windows和Linux下协同工作的时候, 往往这个细小的差别就导致问题, 如1)Windows下写的Shell脚本, 在Linux下运行时往往出现rn是无效参数, 不能执行;2)vi 等编器下打开一个文本文件会包含 ^

2012-06-18 11:44:30 623

转载 图解数据结构(10)——排序

十四、排序(Sort)这可能是最有趣的一节。排序的考题,在各大公司的笔试里最喜欢出了,但我看多数考得都很简单,通常懂得冒泡排序就差不多了,确实,我在刚学数据机构时候,觉得冒泡排序真的很“精妙”,我怎么就想不出呢?呵呵,其实冒泡通常是效率最差的排序算法,差多少?请看本文,你一定不会后悔的。1、冒泡排序(Bubbler Sort)前面刚说了冒泡排序的坏话,但冒泡排序也有其优点,那就是好理解

2012-06-15 10:52:08 579

转载 图解数据结构(9)——左偏树

十三、左偏树(Leftist Tree)树这个数据结构内容真的很多,上一节所讲的二叉堆,其实就是一颗二叉树,这次讲的左偏树(又叫“左翼堆”),也是树。二叉堆是个很不错的数据结构,因为它非常便于理解,而且仅仅用了一个数组,不会造成额外空间的浪费,但它有个缺点,那就是很难合并两个二叉堆,对于“合并”,“拆分”这种操作,我觉得最方面的还是依靠指针,改变一下指针的值就可以实现,要是涉及到元素的移动

2012-06-15 10:51:00 492

转载 图解数据结构(8)——二叉堆

十二、二叉堆(Binary Heap)经历了上一篇实现AVL树的繁琐,这篇就显得非常easy了。首先说说数据结构概念——堆(Heap),其实也没什么大不了,简单地说就是一种有序队列而已,普通的队列是先入先出,而二叉堆是:最小先出。这不是很简单么?如果这个队列是用数组实现的话那用打擂台的方式从头到尾找一遍,把最小的拿出来不就行了?行啊,可是出队的操作是很频繁的,而每次都得打一遍擂台,那就

2012-06-15 10:49:51 469

转载 图解数据结构(7)——二叉查找树及平衡二叉查找树

十、二叉查找树(BST)前一篇介绍了树,却未介绍树有什么用。但就算我不说,你也能想得到,看我们Windows的目录结构,其实就是树形的,一个典型的分类应用。当然除了分类,树还有别的作用,我们可以利用树建立一个非常便于查找取值又非常便于插入删除的数据结构,这就是马上要提到的二叉查找树(Binary Search Tree),这种二叉树有个特点:对任意节点而言,左子(当然了,存在的话)的值总是小于

2012-06-15 10:48:45 515

转载 图解数据结构(6)——树及树的遍历

八、树(Tree)树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方式,可见树用来描述包含关系是很不错的,但这种包含关系不得出现交叉重叠区域,否则就不能用树描述了,看图:面试的时候我们经常被考到的是

2012-06-15 10:47:15 935

转载 图解数据结构(5)——散列法及哈希表

七、哈希表(Hash Table)及散列法(Hashing)数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法——拉链法,我们可以理解为“链表的数组”,如图:左边很明显是个数组,数组

2012-06-15 10:45:54 558

转载 图解数据结构(4)——二分法查找法

六、二分法查找(Binary Search)如何从数组里找一个元素的位置?如果排列是无序的,我们只能从头到尾找,但如果排列是有序的,我们则可以用别的更好的方法,二分查找法就类似我们在英汉词典里找一个单词的方法。如下图所示(假如我们要查找的数字是“88”):下面我给出了一段demo代码,来演示二分查找法比顺序查找快多少,代码为了方便起见,初始化有序表的时候填入的数字都是均匀的,而事实

2012-06-15 10:44:07 674

转载 图解数据结构(3)——队

五、队(Queue)前一篇讲了栈(Stack),队和栈其实只有一个差别,栈是先进后出,队是先进先出,如图:从图中可以看出,队有两个常用的方法,Enqueue和Dequeue,顾名思义,就是进队和出队了。队和栈一样,既可以用数组实现,也可以用链表实现,我还是偏向于用数组,我的实现示意图如下:队有啥用呢?一个最常用的用途就是“buffer”,即缓冲区,比如有一批从网络来的数据,处理

2012-06-15 10:43:19 26250

转载 图解数据结构(2)——栈

四、栈(Stack)前一篇讲解了最基本的东西,这篇就稍微前进一点点,讲一下栈,栈在英文中叫Stack,翻译成中文又叫“堆栈”,但决不能称为“堆”,这个要搞清楚,我们说的“栈”和“堆栈”指的都是Stack这种数据结构,但“堆”却是另外一个概念了,这里且不提。栈最大特点是先进后出,如图:可以看出,栈有几个最常见的方法,或者说必备的方法,Push,Pop和Top,即进栈,出栈和取最顶

2012-06-15 10:41:54 600

转载 图解数据结构(1)——大圈表示法、动态数组和单向链表

《数据结构》这门课是计算机专业的核心课程,但往往却让人头痛,因为比较抽象,当然了,也许你足够聪明,并不觉得它有多难,但对我而言,是有点难度,后来我仔细想了想,到底哪里难?我得出这么个结论:长篇大论,缺乏图表。现在的人都喜欢看电影,看电视剧,很少人还热衷于看小说吧,密密麻麻的文字不如一些图来得直观。另外,我们大多数人是做应用的,不是做研究的,所以我们只需要知道2+3=5,而不需要知道a+b=c。

2012-06-15 10:40:16 613

转载 栈与堆的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2012-06-15 10:24:31 283

转载 宏与内联函数的区别

介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0)就定义了一个宏。   为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这

2012-06-15 10:17:24 452

转载 内存泄漏检查方法总结

方法一:编者按: 这几天在调试课本上关于二叉树的有关代码,发现严的这本数据结构教程喜欢把简单问题复杂化,当然这是从学生角度出发,从个人角度出发,这本书注重代码的可读性、重用等,更侧重于与软件工程、软件组织结合,当然是不错的教材。比如,其栈和队列的顺序实现,也都用指针来代替数组,让学生是很难理解。我在实现过程中,也有点拿不稳,特别是用队列或栈来存储树的结点(也是指针)时,为了确保没问题,

2012-06-15 09:59:08 1661

转载 跟我一起写 Makefile

跟我一起写 Makefile概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不

2012-06-11 15:56:01 446

转载 Linux date命令

Linux--date命令 date命令   date命令的功能是显示和设置系统日期和时间。   该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式)   date 设置时间格式   命令中各选项的含义分别为:   -d datestr, --date datestr 显示由datestr描述的日期   -s datestr, --set date

2012-06-08 10:37:53 569

转载 嵌入式系统开发学习步骤(Linux高级编程学习顺序)

1、Linux 基础安装Linux操作系统Linux文件系统Linux常用命令Linux启动过程详解熟悉Linux服务能够独立安装Linux操作系统能够熟练使用Linux系统的基本命令认识Linux系统的常用服务安装Linux操作系统Linux基本命令实践设置Linux环境变量定制Linux的服务 Shell 编程基础使用vi编辑文件使用Emacs编辑文

2012-06-05 14:25:36 553

转载 深刻理解Linux进程间通信(IPC)

深刻理解Linux进程间通信(IPC)0. 序1. 管道1.1. 管道概述及相关API应用1.2. 有名管道概述及相关API应用1.3. 小结1.4. 参考资料2. 信号(上)2.1. 信号及信号来源2.2. 信号的种类2.3. 进程对信号的响应2.4. 信号的发送2.5. 信号的安装(设置信号关联动作)2.6. 信号集及信号集操作函数2

2012-06-05 11:36:13 1548

转载 LInux进程控制

进程是程序的一次执行,  是运行在自己的虚拟地址空间的一个具有独立功能的程序.  进程是分配和释放资源的基本单位,  当程序执行时,  系统创建进程,  分配内存和 CPU 等资源;  进程结束时,  系统回收这些资源。 进程由PCB(进程控制块)来描述:进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。进程的状态,有运行、挂起、停止、

2012-06-04 15:59:48 485

原创 unix学习整理

一、UNIX常用简单命令:解释   UNIX命令   命令举例-------------------------帮助    man       man date查看日期 date      date查看日历 cal       cal 1998计算器   bc        bc修改口令 password  password查看谁在使用 who    who查看

2012-06-04 13:29:32 713

转载 gcc常见的选项

前三章:要点 1。强烈推荐使用-Wall选项;   注:Warning 的显示格式:    file:line-number:message 2。编译选项-o 文件名:直接产生可执行文件-c 文件名:只编译为.o的库文件,不链接  (.c => .o ) 在将多个.o连接为一个可执行文件时,仅使用-o指定可执行文件名即可,不需要使用-Wall选项,

2012-06-04 12:43:19 549

转载 gcc入门详解

作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个 C 程序语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程

2012-06-04 12:41:47 707

转载 GDB调试(转)

一个调试示例源程序:tst.c代码:1 #include23 int func(int n)4 {5 int sum=0,i;6 for(i=0; i7 {8 sum+=i;9 }10 return sum;11 }121314 main()15 {16 int i;17 long result = 0;18

2012-06-04 10:52:15 437

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除