- 博客(16)
- 资源 (8)
- 问答 (3)
- 收藏
- 关注
原创 二叉搜索树、二叉平衡树、B-树
之前在Linux内核开发大会上听到B+树,当时不明白B+树是个什么东西,百科了一下更是看的一头雾水,翻起数据结构的书一点点看吧(数据结构要学好啊!!!)。本文只讲求了解、明白二叉搜索树等之的概念,常见操作如插入、删除、查找,不涉及具体代码的编写,因为C、Cplus、java各有在二叉树上不同的风格,大家在项目代码见到了知道这是二叉搜索树或是B-树,知道是查找操作还是删除操作就哦了,一般我们不会
2015-10-26 17:24:03 739
原创 二分搜索
二分搜索的基本思想是:设有序表(a0,a1,a2,…,an-1),以元素am为划分点,将表分成(a0,a1,a2,…,am-1)和(am+1,…,an-1)两个表。将am的关键字值与x作比较。 比较结果有三种可能性: (1) xm:若x在表中,则必在子表(a0,a1,…,am-1)中,此时在该子表内进行二分搜索; (2) x==am:搜索成功; (3) x
2015-10-21 14:48:04 1317 1
原创 数据结构之堆
之所以把堆放在二叉树之后介绍,是因为堆跟二叉树的关系太大了,前面说了:一个大小为n的堆是一颗有n个节点的完全二叉树。若该树中每个结点的关键字值大于等于其双亲结点的关键字值。完全二叉树的根称为堆顶,它的关键字值是整棵树上最小的。这样定义的堆称为最小堆 。同理,若树中每个节点的键值小于等于其双亲节点的键值,即根/堆顶的键值是最大的,这样的树就是最大堆。堆是n个元素的序列(k0,k1,L,k
2015-10-20 22:20:23 384
转载 static函数与普通函数区别
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不
2015-10-20 21:07:31 633
原创 数据结构之二叉树
昨天看了一个视频,讲解Facebook、Amazon、Google啊这类名企的面试题目,始终离不开数据结构这个基础课程,围绕数据结构能出的考题实在太多。虽然我不是软件开发工程师,但作为嵌入式工程师,数据结构和算法也是必修课,一个高效的嵌入式代码离不开巧妙的数据结构和优秀的算法。介绍二叉树之前先说说什么是树。树作为非线性数据结构,课本上的定义太抽象:树是包括n个节点的有限非空集合T,其中一个特定
2015-10-20 08:30:33 800
原创 数据结构之堆栈
之前转过一篇关于堆和栈区别的文章(貌似是被转过N遍的一篇经典),但是没跟大家详细讨论过栈、堆这个数据结构,今天就在这里说道说道,如果我说的有不对的地方,请各位不要吝啬赐教!线性表、堆栈、队列同属于线性结构,堆栈是一种后进先出(Last Input First Output)动态线性数据结构。堆栈的表示方法同样有着顺序表示和链式表示。先说对战的顺序表示:C++描述的顺序栈templa
2015-10-19 16:23:49 486 1
原创 数据结构之队列
队列(queue)是一种线性结构,定义如下:若给定队列Q=(a0,a1,…,an-1),则称a0是队头元素,an-1是队尾元素。元素a0,…,an-1依次入队,出队的顺序与入队相同,a0出队后,a1才能出队,因此又称队列为先进先出(FirstIn First Out——FIFO)的动态线性数据结构出队列只能在队头,入队列只能在队尾队列的表示方法有顺序表示、循环表示和链式表示。顺序表示如图头
2015-10-19 11:14:07 416
转载 TCPl建立连接的三次握手机制分析
终端A(Client)和终端B(Server)之间建立TCP连接时,需要经历三次握手,过程如下:1 A向B发送SYN消息,进入SYN_Send状态,表示已发送SYN消息,等待确认.SYN = synchronize Sequence Number,该消息对应的序列号是一个随机值,如SNA.A->BSYNSEQ:SNAACK:02 B收到SYN消息后,
2015-10-17 17:46:10 796
原创 路由器工作原理浅析
路由器是TCP/IP模型上处于第三层网络层的设备,他是实现异构网络互联的关键器件。路由器必须完成两个基本功能:路由处理和数据包转发处理。路由处理:是路由器控制层面的工作,路由选择:收集网络拓扑信息并动态形成路由表(RIB)。数据转发层面:根据转发表(FIB)转发IP数据包。 路由选择的核心器件是路由选择处理器,就是运行着系统软件和路由协议的专用CPU,它动态收
2015-10-15 19:33:01 2350
原创 OSI模型之网络层概述
网络层所处的位置是模型的第三层,第三层的功能和任务是实现数据分组从源主机发送到目的主机,网络层是实现网络的基础。在TCP/IP模型中,IP协议实现了各种异构网络的互联,从而向上一层传输透明的、跟异构网络无关的、与硬件无关的数据包。实现异构网络互联的网络设备就是路由器。那么数据分组是如何穿过网络从源主机到达目的主机的呢?编址与寻址。首先,作为网络中的一个节点,要想让别的节点找到我或者要找别的
2015-10-14 14:44:17 637
原创 bootloader概述
简单地说,bootloader就是在操作系统内核运行前运行的一段程序。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置成合适的状态,为操作系统内核准备好正确的环境。PC机的引导程序就是我们常说的BIOS(Basic Input Output System)。对于千差万别的嵌入式设备,几乎不可能建立像BIOS一样的通用引导程序,但是可以在这些Bootloader
2015-10-13 19:05:09 764
原创 STM32的USB外设初窥
这几天在考虑项目是用USB还是用以太网,但是我们用的平台STM32F103ZET6好像没有Enternet这个外设,所以就先考虑USB吧。USB外设的一大特点就是即插即用,之所以能够这样是因为USB协议规定在主机启动或是USB外设插入系统的时候都要对外设进行配置。这里所说的配置,就是按照USB协议在USB主机和USB设备之间进行一系列的问答过程。这一问答过程是通过主机与USB设备的端点0进
2015-10-12 11:04:43 2581
原创 子程序调用和中断的几个概念
主程序在执行过程中执行子程序,我们称之为子程序调用。 完成子程序调用/中断需要几个概念:入口地址。程序是一组指令,第一条指令的地址称为程序的入口地址。中断和断口地址。一个程序在执行的过程中去执行另一个程序,我们称之为中断,程序中断时的下一条指令的地址称为程序的断口地址。保护现场和恢复现场。如果主程序中断时,有些寄存器还存放着中间结果,而子程序很有可能要占用这些寄存器,那么就要将
2015-10-10 15:54:01 10344
原创 OSI模型之数据链路层概述
上一节说了物理层,按照数据发送/接收的过程分析,位于物理层上一层的是数据链路层,数据链路层上一层是网络层,那么链路层的作用大家猜也能猜出来了:其最基础的服务是将源机网络层的数据可靠的传输到目的机的网络层。一句话概述其工作过程就是将网络层的分组数据包组织起来,通过物理层以比特流的形式发送。 链路层的基本任务:
2015-10-04 09:57:40 604
原创 ucGUI学习笔记之对话框
在emWin模板上学习了两个关于对话框的设计,已经接触到了对话框设计基本要用到的几种控件,现在献上我的拙见,如有误请指正!
2015-10-03 09:31:35 3088
转载 gcc __attribute__详解
__attribute__关键字:http://www.cnblogs.com/longdouhzt/archive/2012/11/15/2771351.html
2015-10-01 20:29:48 723
目录树浏览器
2015-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人