自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (3)
  • 收藏
  • 关注

原创 二叉树遍历

遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍

2013-10-11 10:19:46 561

转载 SDL常用库介绍

http://blog.chinaunix.net/uid-14825809-id-3380726.html库及帮助文档下载:        http://www.libsdl.org/projects/       http://www.libsdl.org/libraries.php(帮助文档在http://www.libsdl.org/projects/docs下)

2013-09-05 10:05:02 1205

原创 Linux下/dev/tty*的文本模式和图形模式及其转换

/dev/tty*可有两种模式:1.文本模式(就是只能显示英文);2.图形模式(可以显示图像)怎样从tty*的文本模式转换到图形模式呢?可以利用open、ioctl  /dev/tty 调用基本接口来做,但是麻烦。我们可以利用SVGAlib库来做,SVGAlib is a low-level graphics library for Linux. It augments the

2013-09-03 17:40:34 1051

原创 数据结构之Status

当函数返回值为函数结果状态代码时,函数定义为Status类型。函数结果状态码:TRUE 1、FALSE 0;OK 1、ERROR 0;INFEASIBLE -1、OVERFLOW -2status类型的函数的返回值可以是字符串类型吗?如: return "A>B成立"; 答:不能。还有一种用法:完整的话,你还应该告诉我定义这个函数之前,代码里有“类

2013-08-28 15:19:23 7334

原创 6.2 二叉树

在讨论一般树的存储结构及操作之前,我们首先分析下一种称为二叉树的抽象数据类型。6.2.1、二叉树的定义      二叉树(Binary tree)是另一种特殊的树形结构,它的特点是每个树结点最多只能有两棵子树,并且二叉树的子树有左右之分,其次序不能任意颠倒。抽象数据类型二叉树的定义如下:ADT BinaryTree{     数据对象D:D是具有相同特性的数据元素的集合。

2013-08-27 11:24:38 785

原创 第6章 树和二叉树

6.1 树的定义和基本术语       树型结构是一种非常重要的非线性数据结构,其中以树和二叉树最为常用,直观来看,树是以分支关系定义的层次结构。树在计算机领域得到广泛应用,如在编译程序中,可用树型结构来表示源程序的语法结构。在数据库系统中,树型结构也是信息的重要组织形式之一。       树是n(n >=0)个结点的有限集。       在任意一棵非空树中:1. 有且仅有一个特定

2013-08-26 10:12:10 515

原创 4.3 串的模式匹配算法

4.3.1 求子串位置的定位函数Index(S,T,pos)算法4.5:采用定长顺序存储结构,可以写出不依赖于其它串操作的匹配算法。int Index(SString S,SString T,int pos) { i = pos; j = 1; while(i <= S[0] && j <= T[0])

2013-08-20 10:41:15 999

原创 怎么构造字体文件

我们想要制作字库的时候就要把它描出来,要想描绘的非常细就需要格子非常细,在非常细的格子中以点阵的方式描绘出你要显示的文字,美工描绘好后;     程序员需要取出关键点,制作为字库文件,比如新宋C:\Windows\Fonts中的simsun.ttc,这个字体文件中有所有常用汉字、英文字母(为了兼容ASCII码)和它们的关键点,我们成为glyph(关键点)。一个文字的显示步骤:第一步:给

2013-08-19 22:01:38 965

原创 linux编程gcc小技巧

gcc 中  -大i   指定头文件的目录gcc中 -小l     链接到你安装的库如freetype库 gcc -lfreetype当数学定义有问题是用  gcc -lm   m是数学的意思数学定义问题如 undefined reference to ’sin‘                               undefined reference to ’cos‘

2013-08-19 17:45:18 416

原创 4.2 串的表示和实现

如果在程序设计语言中,串只是作为输入或输出变量存在,那么只需存储此串的值,即字符序列即可。在多数非数值处理的程序中,串也可以以变量的形式出现。串有三种机内表示方法,分别如下:4.2.1 定长顺序存储表示       类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。按照预定义的串长,为每个串变量分配一个固定长度的存储空间,则可用定长数组描述如下# define

2013-08-19 11:11:03 795

原创 第四章 串

计算机上的非数值处理的对象基本上是字符串数据。在较早的程序设计语言中字符串是作为输入输出的常量出现的。随着语言加工程序的发展,产生了字符串处理。这样,字符串就作为一种变量类型出现在越来越多的程序设计语言中,同时也产生了一系列字符串的操作。字符串简称为串。在汇编和语言的编译程序中,源程序和目标程序都是字符串数据。在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等一般也是作为字符串处理的。

2013-08-19 09:15:04 589

原创 3.5离散时间模拟

在日常生活中,我们经常会遇到许多为了公共秩序而需要排队的情景。这样一类活动中模拟程序通常需要用到队列和线性表之类的数据结构,因此是队列的典型应用之一。例如银行业务的模拟程序:         假设某银行有4个窗口对外接待客户,由于每个窗口每次只能服务一个客户,所以当人多的时候所有窗口都有人的时候,新来的客户需要排队等候;如果4个窗口中有至少有一个是没人的那么客户来就可以办理业务。

2013-08-11 22:42:48 929

原创 3.4队列

3.4.1抽象数据类型队列的定义        和栈相反,队列是一种先进先出(FIFO)线性表。它只允许在表的一端进行插入,在另一端进行删除元素。这和我们的排队是类似的,先来排在前面,办完事先走。在队列中允许插入的一端称为队尾(rear),允许删除的一端称为对头(front)。队列的操作和栈类似,也有8个,不同的是队列是一个在表尾一个在表头,栈在栈顶。3.4.2链队列——队列的

2013-08-09 15:42:04 551

原创 链式存储结构的头指针和头结点

参考:点击打开链接定义LinkList L;则L为链表的头指针。 L=(LinkList) malloc (sizeof(LNode)); //创建一个结点此处返回给L的是一个指针,并且赋给了头指针L->next=null; //这里说明我创建了一个头结点,即同时运用了头指针和头结点,不过感觉头结点用处不大,所以一般还是不用最好。  假设L是LinkList

2013-08-09 15:28:37 3991

原创 3.3栈与递归的实现

栈还有一个重要的应用是在程序设计语言中实现递归。

2013-08-08 22:26:36 713

原创 3.2栈的应用举例

由于栈具有后进先出的特性,所以致使栈成为程序设计中的有用工具。3.2.1 数制转换十进制数N和其它d进制数的转换是计算机实现计算的基本问题,解决算法很多,其中一个简单的算法原理如下:N = (N div d)X d + N mod d(其中div为整除运算,mod为求余运算)例如:10进制与8进制之间的转换;现在编一个满足下列要求的程序:对于一个任意输入的非负10进制数,打

2013-08-08 20:13:08 1252

原创 第3章栈和队列

栈和队列是两种重要的线性结构。从实际结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型的角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用于软件系统,因此在面向对象的程序设计中,它们是多型数据类型。3.1 栈3.1.1 抽象数据类型栈的定义栈是只限定在表尾进行

2013-08-07 16:02:13 484

原创 2.4一元多项式的表示及相加

在这里只简单介绍下一元多项式的表示:对于线性表的两种存储结构,一元多项式也可以有两种存储表示方法。在实际应用中采用哪一种,要视多项式作何种运算而定。若多项式只做求值运算,不做改变系数和指数的运算,则采用类似顺序表的顺序存储结构即可,否则采用链式存储表示。

2013-08-07 13:45:18 752

原创 2.3线性表的链式表示和实现——2.3.2 循环链表,2.3.3双向链表

循环链表是单向循环的,就是尾结点指向其头结点;结点只有后继指针,没有前驱。双向的就是不但尾结点指向头结点,并且结点还有前驱指针,是双向指向。其它操作参考书籍上。

2013-08-06 16:13:31 515

原创 2.3线性表的链式表示和实现

从上一节的讨论中我们线性表的顺序存储结构特点:逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任意一个元素,它的存储位置可用一个简单、直观的公式表达。然而,从另一面,它的特点也造成了这种存储结构的弱点:在做插入和删除时候需要大量的移动元素。本节我们讨论线性表的另一种表示方法——链式存储结构,由于链式存储结构不要求逻辑上相邻的元素在物理位置上相邻,因此,它没有顺序存储结构的弱点

2013-07-30 17:02:35 1255

原创 2.2线性表的顺序表示和实现

线性表的顺序表示是指用一组地址连续的存储单元依次存储线性表的数据元素。假设每个元素占用l长度的存储空间,并以所占的第一个单元的存储地址作为数据元素的存储位置。则数据元素的第i个元素的存储位置LOC(ai)和第i+1个数据元素的存储位置LOC(a(i+1))之间满足下列关系:LOC(a(i+1)) = LOC(ai)+ l一般来说线性表第i个元素的存储位置为:LOC(ai) = LOC(

2013-07-30 15:10:04 639

原创 第2章 线性表——2.1 线性表的类型定义

线性表是最常用且最简单的数据结构。线性表中的数据元素可以是很多种简单的字符、字母等和稍微复杂其它种。例如:26个英文字母的字母表:(A,B,C,D,E……Z)是一个线性表,表中的数据元素是单个字母字符。稍微复杂的线性表中,一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录(record),含有大量记录的线性表又称为文件(file)。例如:一个学校的学生信息登

2013-07-29 16:45:02 832

原创 1.4 算法和算法分析

例:在如下的所示的NXN矩阵相乘的算法中,“算法”运算是

2013-07-29 11:30:08 513

原创 1.3 抽象数据类型表示和实现

抽象数据类型(abstract data type 简称ADT):是指一个数据模型及其定义在该数据模型上的一组操作。和数据结构的形式定义相对应,抽象数据类型可用以下三元组表示:(D,S,P)其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。一般抽象数据类型定义的格式:ADT 抽象数据类型名{数据对象:数据关系:基本操作:}ADT 抽象数据类型名

2013-07-28 16:35:25 1388 1

原创 1.2 基本概念和术语

数据:是对客观事物的符号表示,在计算机中是指所有能输入计算机并被计算机程序处理的符号总称。数据元素:是数据的基本单位,在计算机程序中通常作为一个整体来处理数据对象:是性质相同的数据元素的集合,是一个数据的子集。数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。根据数据元素之间关系的不同特性,通常有4个基本结构:(1)集合(2)线性结构(3)树形结构(4)图

2013-07-28 10:07:04 406

原创 第1章 1.1 什么是数据结构

1.1 什么是数据结构 一般来说,用计算机解决一个具体问题,大致需要经过下列几个步骤:首先,要从具体问题抽象出一个适当的数学模型,然后设计一个解决这个数学模型的算法,最后编出程序。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。例如:可以用数学语言来描述的,求梁架结构中应力的数学模型为线性方程组;预报人口增长情况的数学模型为

2013-07-28 09:50:43 789

原创 目录(数据结构C语言)

第一章 绪论1.1 什么是数据结构1.2 基本概念和术语1.3 抽象数据类型的表示与实现1.4 算法和算法分析1.4.1 算法1.4.2 算法设计的要求1.4.3 算法效率的质量1.4.4 算法的存储空间需求第2章 线性表2.1 线性表的类型定义2.2 线性表的顺序表示和实现2.3 线性表的链式表示和实现

2013-07-27 15:40:22 1027

原创 linux动态链接库(***.so)

动态函数与静态函数的原型说明不同的是,动态函数应使用(*函数名)的形式,以便引用其指针。#ifdef SHAREDint(*gettime)(TIMETYPE *t);//动态函数说明;#elseint gettime(TIMETYPE *t);//静态函数说明;#endif路径:F:\Linux_书籍1. LINUX下动态链接库的创建

2013-07-16 16:01:03 507

原创 智能电池管理系统应用

硬件接口:本项目硬件接口采用ARM处理器s3c6410的ADC和触摸屏复用功能的接口,因为触摸屏我们选择的是一线触摸式的,而不是四线电阻式的。所以复用接口可以被复用为ADC。ADC接口功能描述:这里要用到ADC接口,所以只描述接口ADC功能。接口操作:当触摸屏装置被使用,触摸屏的I/F,XM或YM只接地。当触摸屏的装置未被使用,为正常ADC转换,XM或YM是连接模拟输入

2013-07-13 10:01:42 898

转载 IO端口和IO内存的区别及分别使用的函数接口

IO端口和IO内存的区别及分别使用的函数接口          每个外设都是通过读写其寄存器来控制的。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。根据访问外设寄存器的不同方式,可以把CPU分成两大类。一类CPU(如M68K,Power PC等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没

2013-07-11 22:36:11 703

转载 I/O驱动相关__raw_readl和__raw_writel

1.S3C2410_GPB5是端口编号,定义在regs-gpio.h中,#define S3C2410_GPIO_BANKB   (32*1)#define S3C2410_GPIONO(bank,offset)   ((bank) + (offset))#define S3C2410_GPB5         S3C2410_GPIONO(S3C2410_GPIO_BANKB,

2013-07-11 22:34:47 467

原创 mutex_lock&spin_lock和信号量区别

void pwm_free(struct pwm_device *pwm){ mutex_lock(&pwm_lock); if (pwm->use_count) { pwm->use_count--; pwm->label = NULL; } else printk(KERN_ERR "PWM%d device already freed\n", pwm

2013-07-11 21:13:18 851

转载 2.6.38版本 zImage移植错误问题

Uncompressing Linux......................................................................................................... done, booting the kernel.[    0.000000] in start_kernel[    0.000000] I

2013-07-02 21:24:11 837

原创 linux下make错误汇集

前提:make zImage 2.6.38内核错误:drivers/media/video/gspca/m5602/m5602_core.c:434:1: fatal error: error writing to /tmp/ccYxZaeC.s: No space left on device最终解决是删除了一些源文件,可能是linux硬盘不够大就几十G,还有就是把make 过2.6.2

2013-06-25 21:54:37 2477

转载 Kobject结构体分析

kobject是组成设备device、驱动driver、总线bus、class的基本结构。如果把前者看成基类,则后者均为它的派生产物。device、driver、bus、class构成了设备模型,而kobject内嵌于其中,将这些设备模型的部件组织起来,并形成了sysfs文件系统。kobject就是device、driver、bus、class在文件系统中的代表。在sysfs操作设备时

2013-06-25 11:27:27 457

转载 linux内核cdev_init系列函数(字符设备DS18B20的注册)

内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {   struct kobject kobj;          // 每个 cdev 都是一个 kobject   struct module *owner;       // 指向实现驱动的模块   const

2013-06-25 10:46:33 819

转载 register_chrdev_region与register_chrdev和alloc_chrdev_region区别

在fs.h中的申明如下:分配设备号:extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);extern int register_chrdev_region(dev_t, unsigned, const char *);注册设备:extern int register_chrdev(u

2013-06-24 21:44:13 800

原创 cdev结构和MKDEV和主次设备号

字符设备在linux内核中用cdev来描述struct cdev{struct kobject kobj;struct module *owner;//所属模块;const struct file_operations *ops;//文件操作结构,在写驱动时,大部分函数要实现;struct list_head list;dev_t dev;//设备号,int类型,高12位为

2013-06-24 21:21:54 769

原创 Linux下的ds18b20驱动(编译成模块)

本实验基于Tiny6410开发板上的模块代码如下:代码声明是参考友善之臂论坛里面的,注释是自己添加的。#include     //最基本的文件,支持动态添加和卸载模块。Hello World驱动要这一个文件就可以了#include     //包含了文件操作相关struct的定义,例如大名鼎鼎的struct file_operations#include    #in

2013-06-24 17:29:06 1577 1

原创 linux中的_init应用,含有__attribute__ 和section的意义和作用

在linux/init.h中定义如下:#define __init __section(.init.text) __cold notrace有些版本的内核是这样定义的:#define __init      __attribute__ ((__section__ (".init.text"))) __cold__attribute__ 是什么?linux内核代码使用

2013-06-23 16:21:55 3192

编程规范讲义

提高源程序的可读性和可维护性 降低错误的机会 提高源代码可重用性和质量

2013-11-07

基于Tiny6410平台的编译进内核的源码

本代码是温度传感器的代码,代码是编译进内核的,与编译成模块的代码有稍微区别,可以对比学习,本人已经验证完全通过。

2013-06-27

C语言深入浅出

本文档是C的最经典的描述,包括最简单的和一些数据结构的讲解,语法解释清晰。

2013-06-27

空空如也

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

TA关注的人

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