自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Norton的专栏

修炼内功,吾志在于学

  • 博客(70)
  • 资源 (22)
  • 收藏
  • 关注

原创 红黑树删除本质 与 伪代码分析

性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点红黑树的删除操作是在二叉树删除操作后(加入Nil[T]节点,并修改NULL判断逻辑),加入调整函数,使得

2014-03-28 15:44:47 2489

原创 红黑树的插入操作--伪代码详细分析

学习的时候,最好把性质copy到记事本中,当别人提到性质1,2,3,4,不用翻来翻去。下面的是我学习《算法导论》的笔记。性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数

2014-03-28 12:23:50 2944

转载 Makefile自动化变量与模式规则

转自http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile:%E9%9A%90%E5%90%AB%E8%A7%84%E5%88%993、自动化变量在上述的模式规则中,目标和依赖文件都是一系例的文件,那么我们如何书写一个命令来完成从不同的依赖文件生成相应的目标?因为在每一次的对模式规则

2014-03-26 15:43:34 2302

原创 ssh用法

本帖总结ssh调试过程用到的知识(1)登录并打印出ssh链接过程中的信息ssh -v host@ip(2)...

2014-03-26 15:27:54 649

原创 Makefile编写实例——(.text+0x15): undefined reference to `init_queue'

/tmp/ccNOjiLG.o: In function `main':test_for_print_tree.c:(.text+0x15): undefined reference to `init_queue'test_for_print_tree.c:(.text+0x25): undefined reference to `ifEmpty'test_for_print_tree

2014-03-26 13:38:12 2921

原创 expected specifier-qualifier-list before ‘QNode’——宏定义ifndef避免重复include头文件.h

编译时候遇到这两个错误 error: storage class specified for parameter ‘TNode’ error:expected specifier-qualifier-list before ‘QNode’原因是我很多个文件都#include tree.h,因为#是编译前原地展开的,多个#include tree.h就会冲突,解决办法是给tree.h

2014-03-26 11:59:06 1530

转载 vim分屏总结

转自http://www.cnblogs.com/floatedclouds/archive/2011/11/10/2245008.htmlvim的分屏功能总结起来,基本都是ctrl+w然后加上某一个按键字母,触发一个功能。(1)在shell里打开几个文件并且分屏:  vim -On file1 file2 ...   vim -on file1 file2 ...大O

2014-03-26 09:58:38 991

原创 C语言打印二叉树

基于上一篇,加入了树枝,看起来更直观,不过加这个树枝,算那个横线和空格花了我不少时间,不过最后能写出来,挺爽。上一篇http://blog.csdn.net/xzongyuan/article/details/21945749 C语言打印二叉树在广度遍历的时候,有非常繁杂的计算符号的方法,要看懂可能得花时间。(1)整个设计的难点在sprintf函数运用。sprint

2014-03-25 16:42:51 7969 3

原创 段错误解决办法

血的教训昨天调试遇到两个段错误0x00007ffff7ade419 in memcpy () from /lib/libc.so.60x00007ffff7acd3c9 in _IO_default_xsputn () from /lib/libc.so.6过去一直对指针初始化没什么概念,经过昨天血淋淋的教训(调试时候,产生各种奇怪的预想不到的错误),终于知道,如果要对字符

2014-03-25 11:19:02 2754

原创 0x00007ffff7ade419 in memcpy () from /lib/libc.so.6

先看gdb跟踪过程Hardware watchpoint 3: pad_frontOld value = 4New value = 15breath_travel (pRoot=0x603030, pQueue=0x603010) at print_tree_final.c:206206         if((qNode->blank == 1))(gdb) n

2014-03-25 10:19:17 6118

转载 Linux调试工具strace和gdb常用命令小结

转自http://www.cnblogs.com/panfeng412/archive/2011/10/24/2222413.htmlstrace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux

2014-03-25 10:08:27 875

转载 段错误调试经验

http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.htmlLinux环境下段错误的产生原因及调试方法小结最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)

2014-03-25 10:05:41 1032

原创 0x00007ffff7acd3c9 in _IO_default_xsputn () from /lib/libc.so.6

在打印的时候,遇到Segmentation fault. 经过跟踪,发现是字符指针访问越界了。如下面的实例,本来old_buf只是一个换行符"\n",包括结束符,应该是2个字符,但是gdb跟踪发现sizeof返回的是8.我之所以转化为int,是因为直接用sizeof会报这个错误:print_tree_final.c: In function ‘breath_travel’:print_tr

2014-03-24 17:10:05 3847

原创 C语言打印树基础

相信二叉树是学算法很重要的一门课,但是网上的实现都不好找,于是自己写来玩玩,造福后人。基于前一篇http://blog.csdn.net/xzongyuan/article/details/21880013(实现广度遍历)实现了二叉树的打印,要点:1.要使得二叉树节点排列对齐,首先以个位数作为模型,计算出每个字符之间的间距是多少// ***************0****

2014-03-24 13:53:09 5581 1

原创 C语言队列实现广度优先遍历

上一篇只是定义了数据结构。基于上一篇http://blog.csdn.net/xzongyuan/article/details/21832237增加了队列操作。打印出来的结果是这样的,没有分层打印,分层打印要计算几个参数,比较麻烦,所以我打算以一个正确的广度遍历为基础,对原先的数据结构和算法进行修改。代码比较繁杂,后续打算整理出头文件和多个c文件,脉络会更清晰,水平有限,仅供参考。

2014-03-23 18:15:25 4064 1

原创 C语言二叉树与队列实现基础代码

http://blog.csdn.net/xzongyuan/article/details/21830097c语言队列基本操作代码基于是上一篇做了修改,主要修改结构提,因为准备加入树的操作,代码会越来越繁杂,为了还原整个改写过程,分步显示,#include#includetypedef struct _node{ int value; struct

2014-03-22 22:58:37 1295 1

原创 c语言队列基本操作代码

为了打印binary tree,要使用队列,所以先写个程序测试下#include#includetypedef struct _node{ int value; struct _node *next;}Node;typedef struct _Queue{ Node *head; Node *tail;}Queue;Queue* init_qu

2014-03-22 22:15:26 7093

转载 sprintf用法——把结果打印到打印字符串而不是终端

sprintf用法简介选自《CSDN 社区电子杂志——C/C++杂志》在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:

2014-03-21 15:59:47 3957 1

转载 广度优先遍历代码

广度优先周游二叉树(层序遍历)是用队列来实现的,从二叉树的第一层(根结点)开始,自上至下逐层遍历;在同一层中,按照从左到右的顺序对结点逐一访问。按照从根结点至叶结点、从左子树至右子树的次序访问二叉树的结点。算法:    1初始化一个队列,并把根结点入列;    2根节点入队    3循环直到队列空      3.1  q=队列头元素出队      3.2  访问q的数据域

2014-03-21 15:41:30 885

转载 C语言堆栈入门——堆和栈的区别

转自http://www.cnblogs.com/TonyEwsn/archive/2010/01/29/1659496.html原文:http://student.csdn.net/link.php?url=http://www.top-e.org%2Fjiaoshi%2Fhtml%2F427.html格式和部分内容稍作修改。在计算机领域,堆栈是一个不容忽视的概念,我

2014-03-21 15:39:05 617

转载 c语言自定义堆栈

c语言没有堆栈,要自定义。转百度知道的,稍后要研究struct Stack{ int mData[100]; int mLen;};//初始化栈void InitStack(Stack &S){ S.mLen = 0;}//元素进栈void Push(Stack &S,int item){ S.mData[S.mLen++] = item;}//删除栈顶元素int

2014-03-21 15:08:28 1298

转载 sys-queue.h源码——参考实现stack

/** $NetBSD: queue.h,v 1.45.14.1 2007/07/18 20:13:24 liamjfoy Exp $ */002 003 /**004 * Qemu version: Copy from netbsd, removed debug code, removed some of005 * the implementations. Left i

2014-03-21 14:48:22 1203

原创 运行时输入的char转int

写了一个.o程序,想运行时输入一个数字,表示数量大小,但是输入的是char串的指针,要转化为int。方法是使用atoi函数,main获取到的就是输入参数是char字符串指针。所以所以直接把argv的数组元素给atoi就行了。不用进行类型转换。int main(int argc , char **argv){int quantity; if(argc == 1){

2014-03-20 17:11:45 709

原创 C语言打印字符串实例

#include#includevoid main(){  char a[5]="____\0";  printf("%s %s\n",a,a);  printf(" \n");  printf(" %s\n",a);}注意加了结束符\0,如果不加这个会乱码,还要注意字符是5,包括结束符。

2014-03-20 12:15:17 1522

转载 Vim实现批量注释的方法

调试代码的时候,免不了要批量注释/取消代码注释,很多IDE都有快捷键将你选中的代码块批量注释/取消注释的功能,那么在Vim里面如何完成这个功能呢?方法一 块选择模式 批量注释:Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的I进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,Vim会自动将你选中的所有行首都加上注释取消注释:Ctrl + v

2014-03-20 09:53:36 783

原创 C语言register关键字—最快的关键字

register作用是把变量存入寄存器,这是C语言早期声明符号,现在的C语言已经能比人更好地判断什么时候存入寄存器,所以一般会把你代码里的register去掉,不过你写上也不会报错。该声明符号是在红黑树的插入代码中看到的,因为红黑树在插入数据时候,会有大量的数据搬移工作,同一个变量会被多次访问,所以需要把变量存入寄存器以提高效率。参考:http://blog.sina.com.cn

2014-03-18 13:34:30 750

原创 二叉树统计节点

上篇讲了遍历:http://blog.csdn.net/xzongyuan/article/details/21391775遍历主要利用了递归函数的思想,因此,写统计节点信息的函数时,也要用递归函数的办法去写。如统计叶子节点数:int leaf_num(tree_node *node,int *count){ if(!node) { return 1; //have one

2014-03-17 17:30:59 717

原创 遍历二叉树——非线性数据 到 线性数据

遍历二叉树,有6种可能,主要是根、左子树、右子树的先后排序。其中三种是先右后左,不符合人类习惯,排除这种方式,只采取从左到右的排序。因此,剩下的三种排序方式是常见的:1.先序遍历——“先”访问根节点,然后到左子树,最后右子树。2.中序遍历——先遍历左子树,“中”访问根,后遍历右子树。3.后序遍历——先遍历左,再遍历右,“后”访问根节点。可见,先、中、后描述的是根节点被访问的位置,而

2014-03-17 15:48:05 1253

原创 构建二叉树实例

注意结构体中的_tree_node成员,如果写成tree_node会报错:binary_tree.c: In function ‘construct’:binary_tree.c:39: warning: passing argument 1 of ‘tree_init’ from incompatible pointer typebinary_tree.c:13: note: expec

2014-03-17 15:12:18 2086

原创 链表常见操作-嵌入式C语言

嵌入式笔记1.单链表组织与存储typedef struct _link_node{ elem_type data; struct _link_node *next;} link_node , *link_list;2单链表常见操作(1)初始化int init_link(link_list *list) //注意,这里是指针的指针,相当于**l

2014-03-17 12:10:29 1436

转载 C语言单链表常见操作

转自 http://www.2cto.com/kf/201403/282824.html#include#include //定义单链表结构体typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}LNode,*LinkList; //创建单链表void Build(

2014-03-17 10:55:43 1098

原创 程序的可移植性——字长/不透明数据/数据对齐/大小端

字长能被系统一次处理完的数据就是字,而字长根据不同系统而不同,32位系统字长就是32bit,4个字节。不透明数据为了方便移植,需要屏蔽底层数据字长对系统上层的设计的影响,因此用typedef对不同数据进行重命名。被typedef重命名的数据就是不透明数据。例如进程标识符pid_t,实际上是int型。定义在include/linux/types.h/* bsd *

2014-03-14 17:21:19 1259

转载 堆和栈区别

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

2014-03-14 15:46:17 545

转载 预定义符号

C语言编译器的预定义符号    __LINE__ 当前(源代码文件)行号 [整数]    __FILE__ 当前正在编译的文件的文件名 [字符串]    __FUNCTION__ 当前所在函数    __DATE__ 当前日期,以“月月 日日 年年年年”的形式给出 [字符串]    __TIME__ 当前时间,以“HH:mm:ss”的格式

2014-03-14 15:33:08 1014

原创 从main函数学指针数组和指针的指针

指针数组格式定义如下int *p[10];再看看main函数写法,argv定义为指针数组int main(int argc,char *argv[]){}因为char是字符的基本单位,而main函数输入的函数都是字符串,因此要用字符指针去指向字符串;又因为输入的参数不指一个,所以要用数组存储。两个因素结合起来,就该使用指针数组。假设输入如下命

2014-03-14 13:18:23 666

原创 数组与指针关系

在编译器中,数组a[i]是按照*(a+i)来处理的。其中i根据数据类型大小取不同字节,例如int类型,一个i偏移4个字节,short类型,一个i偏移2个字节。所以a+i不是简单的+i个字节,而是+sizeof(type)个字节。

2014-03-14 12:20:29 584

原创 malloc简单实例

什么时候用到malloc?先看例子1:int a , *p = &a;定义a变量时,系统已经调用malloc分配4个字节内存给a。这时,&a可能会得到一个固定地址0x00020010(所有地址都是32位,即8个字节的,一个字节=2个16进制位数)例子2:int a, *p;a = 2;if(p = (int *)malloc(

2014-03-14 12:11:34 4175 1

原创 struct 结构体定义方式汇总

结构体变量定义方法多样,统计一下直接定义"结构体变量"——如果结构体只在局部使用(函数或.c文件),则可直接定义变量struct person{char name[8];int age;} p1;先定义"结构体类型",再利用"结构体类型"名定义"变量"——主要是为了重用该数据类型,有时候还用typedef重命名一个结构体。目的:如果某个结构体变量很常用,多个文件共用,就该先定义

2014-03-14 11:43:02 1702

原创 全局和局部静态变量(static)解析

static声明主要特性是两点:生命周期和作用域。我们决定使用静态局部变量还是静态全局变量所考虑的就是该变量是否需要一直存在,或者该变量是否应该被限制在某个作用域,例如某个函数或者某个源文件内。生命周期如上图,静态变量是在编译完,程序还没运行就已经分配存储空间的。而自动变量(非静态的普通变量)是运行时分配的,程序还没跑就没有对应的地址空间。生命周期与作用域

2014-03-14 10:31:56 1067

原创 定义与声明的区别

定义:内存会开辟存储区域,同一个变量只能定义一次,否则系统会发现重名。声明:使用已经开辟的内存区域,可以被声明多次,意思是已经被定义的区域可以被多次赋值。

2014-03-14 10:08:11 674

26个精心整理的工具类

Java工具类 26个精心整理的工具类 26个精心整理的工具类 26个精心整理的工具类26个精心整理的工具类26个精心整理的工具类

2017-09-16

java枚举状态机

java枚举状态机

2017-06-15

SDN 与 NFV 知识梳理

SDN 与 NFV 知识梳理,个人使用,供参考

2016-10-06

RTL8211E(G)-xx-CG_DataSheet_1.3.pdf

RTL8211E(G)-xx-CG_DataSheet_1.3.pdf

2015-08-11

Shift JIS编码表

Shift JIS编码表,很容易找到,方便懒人

2015-06-04

ARM中断学习_讲的十分到位

讲的挺好,分享下。对ARM是怎么样调用中断服务程序,把很多中断调用的中断地址给了很完善的讲解。

2014-05-12

51系列单片机的硬件结构-机器周期--1

这个文档挺好,能学到机器时钟、状态时钟的区别,网上搜比较零散

2014-05-09

PLL锁相环原理/设计与应用详解

网上搜了挺多信息,这个ppt还是讲的比较系统的。

2014-05-05

红黑树源码

第一次从无到有写代码,从二叉树到红黑树,到打印树的设计,写了将近2个星期。

2014-04-09

C语言打印二叉树 重构版

之前发布的单独c文件,太大,不可重用,所以我把它重构了,打散成.h和.c文件,加入了Makefile进行编译。 用tar命令解压后,就可以make 运行了。详情请看readme,之前发布的单独文件也在里面

2014-03-26

C语言打印二叉树

打印二叉树,高度为4内的,可完美打印二叉树

2014-03-25

红黑树C语言代码

http://blog.chinaunix.net/uid-24774106-id-3440620.html 是这个作者的,里面放了我写的二叉树的源码

2014-03-19

二叉树构建、排序、统计高度和数量

调试了下二叉树的c语言代码,可以运行的。

2014-03-17

MySQL的JDBC驱动JAR包

MySQL的JAR包下载,官网搜的。 解压后可以看到jar在根目录。

2013-09-14

TinyHttpd源码

tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。

2013-09-01

Linux Socket函数调用的基础实例

是一些基础代码,实现了Server端向Client端发送消息的功能

2013-08-29

GNU C Library Manual

glibc说明文档 The C language provides no built-in facilities for performing such common operations as input/output, memory management, string manipulation, and the like. Instead, these fa- cilities are defined in a standard library, which you compile and link with your programs. The GNU C Library, described in this document, defines all of the library functions that are specified by the ISO C standard, as well as additional features specific to POSIX and other derivatives of the Unix operating system, and extensions specific to GNU systems. The purpose of this manual is to tell you how to use the facilities of the GNU C Library. We have mentioned which features belong to which standards to help you identify things that are potentially non-portable to other systems. But the emphasis in this manual is not on strict portability.

2013-08-17

cocos2d-x 实现3种数据加密方法的源码

cocos2d-x 实现3种数据加密MD5/SHA1/BASE64源码

2013-06-24

Gallery 类跳跃动画

切换图片时,被选中图片加上动画效果,看起来像在跳动,比较活跃可爱的感觉。

2012-11-22

Gallery放大,跳动效果

让gallery滑动的效果更活泼,做了一些人性化的处理。

2012-11-22

空空如也

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

TA关注的人

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