自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 栈(二)——用栈来实现逆波兰式

中缀双目表达式叫做波兰式,后缀双目表达式叫做逆波兰式。波兰式                                 逆波兰式2+3                                   2  3  +2+3*5                               2  3  5  *  +2*3+5

2014-07-29 21:18:15 1451

原创 栈(一)——栈的基本操作

1.栈的简介栈是一种后入先出的数据结构,一般包含两种最基本的操作:入栈(push)和出栈(pop)。入栈操作:top指针上移,元素入栈。出栈操作:top指针下移。栈空的条件:top == bottom栈满的条件:top == maxsize-12.有数据序列1 2 3一次存入一个栈stack中,则出栈顺序可以为以下四种:1,2,3; 2,1,3; 3,2,1; 1,3,

2014-07-28 21:52:34 3016

原创 笔试题&面试题:找出一个数组中第m小的值并输出

题目:找出一个数组中第m小的值并输出。代码:#include int findm_min(int a[], int n, int m) //n代表数组长度,m代表找出第m小的数据{ int left, right, privot, temp; int i, j; left = 0; right = n - 1; while(left < right) { privo

2014-07-25 20:54:58 1734 1

原创 笔试题&面试题:输入一个维度,逆时针打印出一个指定的矩阵

题目:用户给定一个维度,打印出指定的一个矩阵,例如用户给定10,输出应该如下图所示:程序如下:#include #include int main(){ int dimension; int *p; int startx, starty, endx, endy; int i, j, value = 0; printf("Please input dimension

2014-07-24 15:41:31 1725

原创 链表(五)——单向循环链表

1.单向循环链表区分单向链表和单向循环链表:单向循环链表的尾指针指向头结点。2.单向循环链表的基本操作#include #include #define NULL 0typedef struct node { int data; struct node *next;}ElemSN;ElemSN * creat_link(int ms); //创建一个单向循环链表

2014-07-22 22:05:05 2139 1

原创 链表(四)——带表头的单向链表

1.带表头的单向链表(1)不带表头的单向链表在实现插入和删除时必须区分头结点和其他节点的处理。(2)使用带表头的单向链表的好处:不用考虑头结点的单独处理。表头节点:数据域没有值,指针域指向单向链表中数据域含值的第一个结点。2.代表头的单向链表的基本操作#include #include #define NULL 0typedef struct node { int

2014-07-20 10:53:02 3623

原创 链表(三)——链表删除冗余结点&插入结点到有序链表

1.一个以递增方式排列的链表,去掉链表中的冗余值。思路一:设有两个指针p和q,使p不动,q依次往后循环直到p->data不等于q->data,再将中间的冗余数据删除。思路二:设有两个指针p和q,使p在前,q在后,只要找到一个冗余就删除一个,依次往后删除。输入的链表:1 3 3 3 3 6 6 8 9 10删除后的链表:1 3 6 8 9 10比较两种思路,思路二的想法相比于思路

2014-07-19 16:39:47 1184

原创 链表(二)——单向链表的基本操作(创建、删除、打印、结点个数统计)

1.指针的联动通过两个指针分别指向前驱和后继结点,并在单向链表上进行移动,当指针指向待处理的结点时,该结点的前驱也有指针指向。2.设有一个无序单向链表,且数据域的值均不相同,使指针pmin指向最小值结点,并使指针prem指向最小值结点的前驱结点:代码片段:for(p = head; p; q = p, p = p->next){    if(pmin->data > p->

2014-07-16 20:49:51 2580

原创 链表(一)——创建一个最基本的单向链表

1.结点链表中用来存储一个数据的存储单元。一个链表至少需要由两部分组成,就是数据域和指针域,一般形式的结点定义为:struct node{    Elem data; //Elem类型泛指基本数据类型    struct node *next;}typedef struct node Elemsn;以上两步等价于:typedef struct node{

2014-07-14 21:33:52 1353

原创 C++语言笔记系列之二十——模版

1.任意输入两个数x和y,输出最大值max。int max(int x, int y){return x>y?x:y;}2.函数模版(1)用一种或者多种通用类型去表示函数——函数模版。(2)函数模版由于没有具体的数据类型,所以函数模版不可运行。(3)作用:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分

2014-07-07 21:56:09 903

原创 C++语言笔记系列之十九——虚函数(2)

1.构造函数和析构函数中调用虚函数(1)采用静态编译。(2)在编译阶段自动联接自己类中的函数或基类中的函数,不在派生类中重定义一个函数。注:构造函数和析构函数中调用的虚函数,派生类都不一定存在的情况下,只能去调用基类或者自身的函数。example 1#include class A{public:    A() {}    virtual void

2014-07-06 11:31:38 964

原创 C++语言笔记系列之十八——虚函数(1)

1.C++中的多态(1)多态性:同一个函数的调用可以进行不同的操作,函数重载是实现多态的一种手段。(2)联编:在编译阶段进行联接,即是在编译阶段将一个函数的调用点和函数的定义点联接起来。A.静态联编:在编译阶段就完成的函数联编——函数重载。B.动态联编:在程序的运行阶段由系统自动选择具体的函数——虚函数。注:C++的多态主要指的就是动态联编。2.虚函数(1)虚函数是在函

2014-07-05 16:05:51 989

原创 C++语言笔记系列之十七——虚基类

1.虚基类考虑这样一种情况:当某个类的部分或者全部直接基类是另一个共同基类派生而来,这些直接基类从上一级基类继承而来的成员就一定拥有相同的名称,这样就会产生二义性问题。解决办法:当派生类和直接基类产生了二义性问题-->加类的作用域。          当派生类和间接基类产生了二义性问题-->虚基类。2.虚基类的说明:class 派生类名:virtual 访问权限 基类名{派

2014-07-04 22:01:09 1230

原创 C++语言笔记系列之十六——赋值兼容规则&多继承的二义性

1.赋值兼容规则(1)派生类对象可以给基类对象赋值,这种情况下派生类对象将从基类继承的成员的值赋值给一个基类对象;但是不允许将一个基类的对象赋值给一个派生类。(2)可以将派生类对象的地址赋给基类指针,使基类指针指向派生类对象,通过基类指针引用成员时只可以引用派生类从基类继承而来的成员,而不允许引用派生类的新成员。(3)引用与指针相同。2.多继承(1)一个派生类从两个以上的基类中

2014-07-04 20:25:17 1887

原创 C++语言笔记系列之十五——派生类、基类、子对象的构造和析构函数调用关系

例子example 1注:若一个基类同时派生出两个派生类,即两个派生类从同一个基类继承,那么系统将为每一个简历副本,每个派生类独立地使用自己的基类副本(比如基类中有属于自己类的静态变量等)。#include class Person{public:    person() {cout    ~person() {cout};class Student:p

2014-07-01 22:41:49 1161

原创 C++语言笔记系列之十四——继承后的访问权限

1.析构函数不继承;派生类对象在析构时,基类析构函数的调用顺序与构造函数相反。注:派生类对象建立时要调用基类构造函数,派生类对象删除时要调用基类析构,顺序与构造函数严格相反。2.例子example 1#include #include class Point{public:    Point(double a, double b, doule c)

2014-07-01 21:40:17 951

原创 C++语言笔记系列之十三——派生类构造函数的调用

1.派生类构造函数的调用(1)一个基类的所有数据成员均被派生类继承。创建一个派生类对象时,系统在为派生类对象分配单元时一定要为其基类数据成员分配子空间。(2)一个派生类对象在创建时不仅要调用派生类构造函数,而且要调用基类构造函数。派生类中的数据成员在派生类中构造。基类中的数据成员在基类中构造。原因:A.构造函数不继承。B.派生类的构造函数必须通过调用基类的构造函数完成基

2014-06-29 10:16:07 1108

原创 C++语言笔记系列之十二——C++的继承

C++的继承1.继承方式public(公有继承)派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员。派生类的对象只能访问基类的public成员。protected(保护继承),private(私有继承)派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员。派

2014-06-29 09:36:11 1003

原创 C++语言笔记系列之十一——友元函数与拷贝构造函数

1.友元函数(1)友元函数是定义在一个类外的普通函数。友元函数和普通函数的定义一样;在类内必须将该普通函数声明为友元。(2)友元函数不是成员函数。不能通过对象来调用,而是直接调用;友元函数可以访问类的公有、受保护以及私有成员,但是必须通过对象、对象指针或者对象引用来访问。2.友元函数的声明friend 返回值类型 函数名(参数表);在类中只需要将这个声明放置在公有部分即

2014-06-28 21:24:22 1103

原创 笔试题&面试题:求1+11+111+1111+...+n个1的和中有多少个1?

题目:求1+11+111+1111+...+n个1的和中有多少个1?解答思路:从个位往最高位计算,比如一直加到2014个1,那么个位一共有2014个1相加,先判断相加之后的和最低位(个位是否为1),相加之后的进位为201,其中2,0,1分别对应千位,百位和十位的进位;接下来求十位的和,十位为2013个1加上上一次的进位1,算出本次的进位(相对于十位的计算结果来说,个位的计算结果中只有20才是进

2014-06-27 17:07:24 6327 3

原创 笔试题&面试题:顺时针输出一个矩阵

题目:顺时针输出一个矩阵(N*N)。假设一个矩阵为: 1   2   3   4 5   6   7   8  9  10 11 1213 14 15 16那么程序应该给出的输出为:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10这个问题在网上也搜集了一下答案,没有什么巧妙的办法,所以下面给出的是完全按照顺时针走向输出的一个代码(自己亲手编写

2014-06-27 09:45:39 2666

原创 笔试题&面试题:30个人一共花费50先令,求解男人,女人和小孩的人数分别为多少?

马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?

2014-06-26 11:22:03 8712

原创 C++语言笔记系列之十——静态成员

1.静态成员(1)由关键字static修饰静态变量定义语句在编译阶段就执行,运行过程中不再执行。(2)分类:静态数据成员、静态成员函数。(3)静态成员时类的所有对象共享的成员,而不是某一个对象的成员。2.静态成员的使用(1)在定义说明前加上static关键字。例如:static int x;(2)静态数据成员必须进行初始化,并且初始化必须在类外完成。(3)静态数

2014-06-24 23:24:35 947

转载 linux下/proc文件夹内容详解

Linux下/proc目录简介1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所

2014-06-16 09:35:53 3066

原创 linux下ARM交叉编译器的安装

1.下载arm-linux-gcc编译器。2.将下载好的编译器压缩文件拷贝到linux中,注意不要在windows中解压,因为RAR解压工具解压gzip压缩工具压缩的文件可能会出问题。尽量将编译器的压缩文件放置到根目录下(其实也不一定是要根目录,但是我自己使用过程中发现有一个厂家提供的编译器没有安装在指定的位置,编译器提示库找不到),这样做的目的是为了尽量减少麻烦。拷贝好之后,在终端使用:

2014-06-14 17:07:44 1558

原创 STM32处理器的AD难点整理

1.STM32的AD转换,可以将转换任务组织为两个组:规则组和注入组。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。可以模糊的将注入组的转换理解为AD转换的中断一样,规则通道组的转换是普通转换,然而注入组的转换条件满足的情况下,注

2014-06-11 15:45:51 3154

转载 arm-linux内核配置文件Kconfig语法

当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig。Kconfig的作用:Kconfig用来配置内核,它就是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置件.config。

2014-06-10 16:29:13 1108

原创 ubuntu常用命令总结

1.df命令# df -ha显示所有的档案以及分区的使用情况# df -h /dev/sda1显示sda1的磁盘使用情况# df -T显示每个分区的所属的档案系统名称,也会显示分区的格式类型(比如ext3)注:h参数表示转换为M,G等人们常用的磁盘空间单位显示2.du命令# du -h src显示src目录中各个文件(或者文件)所占用的磁盘空间# du

2014-06-10 14:01:30 1760

转载 vmtools的安装

第一步:进入系统后,点击虚拟机上的安装vmware tools,回到桌面回看到一个vmware tools的cdrom图标。第二步:打开它,复制“vmwaretools....tar.gz”,打开文件系统,打开home文件夹,打开当前用户为名的文件夹,粘贴vmwaretools....tar.gz,同时解压此文件“到此处”。第三步:在此文件夹空白处点击右键,点击属性,在点击窗口中的“权限”,把

2014-06-04 23:58:17 750

原创 samba服务器实现ubuntu和windows之间共享

安装Ubuntu samba服务器:sudo apt-get install sambasudo apt-get install smbfs

2014-06-04 23:10:25 854

转载 linux下的/etc目录详解

Linux /etc目录详解/etc目录   包含很多文件.许多网络配置文件也在/etc 中. /etc/rc   or/etc/rc.d   or/etc/rc*.d     启动、或改变运行级时运行的scripts或scripts的目录. /etc/passwd     用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.

2014-05-30 13:56:54 1543

原创 make规则(整理)

1.linux下的.a库就是很多.o文件的集合,这些.o文件通过ar命令打包进去。2.Makefile/makefile的作用是告诉以make命令需要怎么样的去编译和链接程序。3.在Makefile中如果语句太长可以用\来换行,换行后的下一行正文开始前可以加空格补齐。例如:    rm edit main.o kbd.o command.o display.o \       

2014-05-09 16:12:39 1606

原创 Modbus读写模拟量寄存器详解

读可读写模拟量寄存器: 发送命令(主机向从机)格式:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位] 例:[11][03][00][6B][00][03][CRC低][CRC高] 意义如下:11:设备地址,例子中的地址是11,溶氧传感器端默认的地址是1,。03:读模拟

2014-05-09 11:42:11 9990 1

原创 鸟哥的linux私房菜整理(一)

1.磁盘第一个扂区主要记录了两个重要的信息,分别是:主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes分割表(partition table):记录整颗硬盘分割的状态,有64 bytesMBR是很重要的,因为当系统在开机的时候会主劢去读取这个区块内容,这样系统才会知道你程序放在哪里且该如何进行开机。分割表就叧有64

2014-04-19 21:59:39 1264

原创 GPRS模块(MG2639)TEXT模式和PDU模式发送短消息详解(含代码片段)

1.使用at命令发送短消息常用Text和PDU(Protocol   Data   Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能发中文短信(接收到一条短信之后使用文本模式将其读出是完全可以的,只是读出的内容与使用PDU模式读出的内容有一些区别,但正文内容是完全可以获取到的);而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可

2014-04-17 13:57:43 4729

原创 排序——插入排序法

插入排序法图示:

2014-04-14 16:01:25 960

原创 字符设备驱动程序——异步通知

1.各种读取按键值的方式比较查询:耗CPU资源中断:在应用程序中的read函数一直会休眠,直到有中断发生。poll:在一段时间内跟中断相同,但是超时之后read函数会返回。三种共同点:应用程序主动去读取按键的状态。2.驱动程序主动去提醒应用的方式:异步通知实现方式:signal举例:# kill -9 PIDkill发送9信号到PID在ubuntu上测试的简

2014-03-04 20:55:53 1372

转载 gst-launch-0.10的man手册说明

Namegst-launch - build and run a GStreamer pipeline Synopsisgst-launch [OPTION...] PIPELINE-DESCRIPTION Descriptiongst-launch is a tool that builds and runs basic GStreamer pipelines.

2014-03-03 17:26:12 3771

转载 gstreamer的gst-inspect 和gst-launch

用gstreamer架构做对媒体开发时,gst-inspect 和gst-launch是两个非常使用的小工具,前者是用于查询库中已经包含的所有element以及他们的详细信息,后者用于快速构建一条pipeline,这个命令最爽,因为只要一句话,你就可以感受到播放的快感。废话不多说,直接看示例:1 gst-inspect用法:首先进入命令行下,然后键入:gst-inspect

2014-03-03 17:12:02 1930

转载 gstreamer的gst-launch常用插件

gstreamer很牛逼,让多媒体应用程序的开发变的更加简单,但是,也正是由于gstreamer对很多细节的隐藏,使得我们很容易把多媒体编程想得过于简单。关于gst-launch的使用,这里不做教学,初次接触者可以自行google。然后,请准备一个摄像头,下面我举的例子,都会用到。先罗列出一堆例子--gst-launch-0.10 v4l2src ! ximagesink

2014-03-03 17:10:29 4053

空空如也

空空如也

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

TA关注的人

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