自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面向对象编程(二)

构造函数与析构函数1.构造函数 1)构造函数的特点: 构造函数可以有任意类型和任意个数的参数,你个类可以有多个构造函数(重载) 构造函数被声明为私有特殊的用途 函数名和类名完全相同 2)如果程序中未声明,则系统自动产生出一个默认构造函数,不带参数的构造函数 3)全局对象的构造函数先于main函数 4)当一个类存在构造函数时,手动加入参数 注:手动写入无参构造函数 2.析构函数 1

2017-02-09 19:45:07 371

原创 面向对象编程(一)

面向对象编程介绍1.什么是面向对象 面向将系统看成通过交互作用来万恒特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据 2.面向对象的优点 通过,继承、封装、多态降低程序的耦合度,并结合设计模式让程序更容易修改和扩展,并且易于复用。 3.面向对象的特点 ① 封装——维护性 ② 继承——复用性 ③ 多态——扩展性

2017-02-08 20:17:15 370

原创 从c到c++的升级

1.声明定义 C++可以在需要使用时再定义2.register关键字的升级 ·C++中可以取得register变量的地址3.const关键字 ·const修饰的变量不可变,也不可通过空间修改,即常量看待。当碰见常量声明时在符号表中放入常量4.内存分配与释放(new/delete) 变量申请: Type * pointer = new Type; //——- delete

2017-02-07 22:35:21 397

原创 C++概述

1.嵌入式开发为什么学习C++语言? 面向过程VS面向对象(C语言 VS C++语言) 面向过程编程的特点(C语言): 1)C语言的特点: ·没有深思熟虑的设计过程 ·残留过多低级语言的特征 2)面向过程的编程的特点 ·主要解决科学计算机问题,用户需求简单固定面向对象编程的特点(C++语言): ·由现实世界中的事物直接映射到程序中,可直接满足用户需求 直接

2017-02-07 10:49:29 364

原创 简答题——栈和队列的区别

栈和队列的区别? 1.队列先进先出,栈先进后出。 2. 对插入和删除操作的”限定”。 栈是限定只能在表的一端进行插入和删除操作的线性表。队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。 3.栈和队列是在程序设计中被广泛使用的两种线性数据结构,它们的特点在于基本操作的特殊性,栈必须按”后进先出”的规则进行操作,而队列必须按”先进先出” 的规则进行操作。

2016-12-27 21:10:31 1680

原创 简答题——系统调用与库函数的区别

系统调用与库函数的区别? (1)库函数是语言或应用程序的一部分,而系统调用是内核提供给应用程序的接口,属于系统的一部分 (2)库函数在用户地址空间执行,系统调用是在内核地址空间执行,库函数运行时间属于用户时间,系统调用属于系统时间,库函数开销较小,系统调用开销较大 (3)库函数是有缓冲的,系统调用是无缓冲的 系统调用依赖于平台,库函数并不依赖

2016-12-26 20:31:40 461

原创 程序题——清零和设置bit位

给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。#define BIT3 (0×1<<3)static int a;void set_bit3(void){ a |= BIT3;} void clear_bit3(void){ a &= ~BIT3;}

2016-12-25 21:43:38 1718

原创 简答题——heap和stack的区别

Heap和Stack的区别? 1.heap是堆,stack是栈。 2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。 3.stack空间有限,heap的空间是很大的自由区。在Java中,若只是声明一个对象,则先在栈内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。

2016-12-24 20:59:28 479

原创 程序题——打印空心正方形

请以尽量高效的方法用”*”打印出一个空心正方形,num为边长#include <stdio.h>int main(){ int x,y,num; printf("please input the num:\n"); scanf("%d",&num); for(x = 0; x < num; x++) { for(y = 0 ; y < num;

2016-12-23 22:08:47 5610

原创 简答——进程死锁

什么是进程死锁?造成进程死锁的原因? 如果多个进程同时占有对方需要的资源而同时请求对方的资源,并且在得到请求前不会释放所占有的资源,那么就会导致死锁的发生,也就是进程不能实现同步。 产生死锁的原因可以归结为以下两点: (1)资源竞争;(2)进程间推进顺序非法

2016-12-22 21:52:10 378

原创 程序题——递归判断递增

用递归算法判断数组是否为一个递增数组 bool fun( int a[], int n ) { if( n == 1 || n == 0 ) return true; if( n ==2 ) return a[n-1] >= a[n-2]; return fun( a,n-1) && ( a[n-1] >= a[n-2] ); }

2016-12-21 22:37:07 605

原创 程序题——字符串逆序

void reverse(char *str,int len){ int i;   char *str1 = str; if(len <= 0 || *str1 == NULL) { return ; } char temp; for(i = 0; i < len; i++) { temp = *(str1

2016-12-20 19:50:20 480

原创 程序题——strstr的自我实现

包含文件:extern char *strstr(char *str1, const char *str2);语法: strstr(str1,str2)str1: 被查找目标 string expression to search. str2: 要查找对象 The string expression to find.返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如

2016-12-19 21:02:52 377

原创 程序题——链表倒数结点

编写一个程序,实现输出链表中倒数第K个结点ListNode * FindKthToTail(LisNode *head, unsigned int k){ if(head == NULL || K == 0) //入口参数检查!!! { return NULL; } int i; ListNode *pAhead = h

2016-12-18 22:14:05 337

原创 程序题——字符串转化成为数字

C语言库函数里是否有将字符串转化为数字的函数,若有则用自己的方式实现它。int atoi(const char * str){ if(str == NULL) //入口参数检查!!! { return -1; } long long num = 0; //溢出问题有没有考虑

2016-12-17 23:13:14 437

原创 程序题——输出蛇形代码

编写一个程序,输出类似的蛇形代码: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9#include <stdio.h>#include <malloc.h>int main(){int n;int x,y,round;//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标

2016-12-16 22:11:18 360

原创 赫夫曼编码

定理在变字长编码中,如果码字长度严格按照对应符号出现的概率大小逆序排列,则其平 均码字长度为最小。 现在通过一个实例来说明上述定理的实现过程。设将信源符号按出现的概率大小顺序排列为 : U: ( a1 a2 a3 a4 a5 a6 a7 ) [1] 0.20 0.19 0.18 0.17 0.15 0.10 0.01 给概率最小的两个符号a6与a7分别指定为“1”与“0”,然后将它们的概率

2016-12-15 22:59:48 423

原创 哈夫曼树

基本术语 哈夫曼树(霍夫曼树)又称为最优树. 1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 2、结点的权及带权路径长度 若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的

2016-12-14 21:12:54 520

转载 线索二叉树

概念这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种 注意: 线索链表解决了无法直接找到该结点在某种遍历序列中的前趋和后继结点的问题,出现了二叉链表找左、右孩子困难的问题。线索二叉树结构二叉树的遍历本质上是将一个复杂的非线性结构转换为线性结构,使每个结

2016-12-13 23:35:03 550

原创 (综合)进程间通信方式

1)管道 管道分为有名管道和无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。 有名管道也是一种半双工的通信方式,但是它允许无亲缘

2016-12-12 20:45:00 398

转载 二叉树的顺序存储

【出处】http://book.51cto.com/art/200907/134251.htm 3.2.2 二叉树的顺序存储结构和链式存储结构(1)二叉树的顺序存储结构按照顺序存储结构的定义,用一组地址连续的存储单元以此自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为i的结点元素存储在如上定义的一维数组中下标为i-1的分量中。对于一般二叉树,则应将其每个结点与完全二叉树上的结

2016-12-11 20:47:03 1115 1

转载 二叉树的非递归遍历

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。 一.前序遍历 前序遍

2016-12-10 22:22:31 242

原创 二叉树

基本概念 二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树 (2)只有一个根结点的二叉树; (3)只有左子树; (4)只有右子树; (5)完全二叉树。 注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。 类型 (1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点

2016-12-09 21:47:13 89

转载 关键路径

AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网。AOE网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点(或汇点)。 AOE网的性质: ⑴ 只有在某顶点所代表的事件发生后,从该顶点出发的各活动才能开始; ⑵ 只有在进入某顶点的各活动都结束,该顶点所代表的事件才能发生。 关键路径:

2016-12-08 23:19:27 358 1

转载 拓扑排序

转载http://www.cnblogs.com/dolphin0520/archive/2011/04/16/2017737.html 概述 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topo

2016-12-07 21:47:45 202

原创 最短路径——Floyd算法

概述 Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。 核心思路 路径矩阵 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。 从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的

2016-12-06 21:09:54 599

转载 最短路径——迪杰斯特拉算法

概述 用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 算法 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的集合(初始时只含有源点V0) (2)V-S=T:尚未确定的顶点集合 将T中顶点按递增的次序加入到S中,保证:

2016-12-05 22:18:29 668

原创 Kruskal算法

问题描述 设G=(V,E)是无向连通带权图,如果G的一个子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。生成树的各边权的总和称为该生成树的耗费,求在G的所有生成树中耗费最小的最小生成树。 算法思想 (1)将代价树中权值非0的所有的边进行小顶堆排序,依次存入到road[]数组中,然后将road[]进行倒置,注意在进行排序时,按照road[i]的权值进行排序,然后记录这条边的起始顶点也要

2016-12-04 22:33:16 661

原创 prime算法

prime算法的基本思想1.清空生成树,任取一个顶点加入生成树2.在那些一个端点在生成树里,另一个端点不在生成树里的边中,选取一条权最小的边,将它和另一个端点加进生成树3.重复步骤2,直到所有的顶点都进入了生成树为止,此时的生成树就是最小生成树int prime(int cur){ int index; int sum = 0; memset(visit, false, s

2016-12-03 20:10:12 629

原创 最小生成树概念及性质

概念 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得 的 w(T

2016-12-02 23:03:53 3691

原创 图的遍历

图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的其它算法如求解图的连通性问题,拓扑排序,求关键路径等都是建立在遍历算法的基础之上。由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面: ① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点。 ② 在非连通

2016-12-01 21:52:52 848

原创 图的存储结构

图的存储结构相比较线性表与树来说就复杂很多。 对于线性表来说,是一对一的关系,所以用数组或者链表均可简单存放。树结构是一对多的关系,所以我们要将数组和链表的特性结合在一起才能更好的存放。 图,是多对多的情况,另外图上的任何一个顶点都可以被看作是第一个顶点,任一顶点的邻接点之间也不存在次序关系。因为任意两个顶点之间都可能存在联系,因此无法以数据元素在内存中的物理位置来表示元素之间的关系(内存物理

2016-11-30 22:07:01 319

原创 数据结构之图的定义与术语

图:由有穷、非空点集和边集合组成,简写成G(V,E); Vertex:图中的顶点;无向图:图中每条边都没有方向; 有向图:图中每条边都有方向;无向边:边是没有方向的,写为(a,b) 有向边:边是有方向的,写为 <a,b> 有向边也成为弧;开始顶点称为弧尾,结束顶点称为弧头;简单图:不存在指向自己的边、不存在两条重复的边的图;无向完全图:每个顶点之间都有一条边的无向图; 有向完全图:每个顶

2016-11-29 22:17:56 594

原创 无线传感器网络MAC协议(下)

2.其他基于IEEE802.11改进的MAC协议尽管传统的基于CSMA方式的MAC协议也是基于载波监听和退避机制,但它们并不太适合无线传感器网络,因为它们都基本假设了随机分布的业务,并且趋向于支持独立的点到点的业务流。此外,无线传感器网络的MAC协议必须支持可变的而且高度相关和可控的周期业务。任意基于CSMA的MAC机制都有两个重要组成部分:监听和退避机制。实际上,无线传感器网络MAC协议关注的基本

2016-11-28 20:19:24 3797

原创 无线传感网MAC协议(上)

无线频谱是无线移动通信的通信介质,是一种广播介质,属于稀缺资源。在无线传感器网络中,可能会有多个节点设备同时接入信道,导致分组之间相互冲突,使接收方无法分辨出接收到的数据,浪费信道资源,吞吐量显著下降。为了解决这些问题,就需要MAC(介质接入控制)协议。所谓MAC协议,就是通过一组规则和过程来更有效、有序和公平地使用共享介质。在无线传感器网络中,为了实现多点通信,由MAC(Medium Access

2016-11-27 21:39:29 2493

转载 shell的编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell种类众

2016-11-26 21:03:18 236

转载 shell用法

在shell文件内部定义函数并引用: 代码如下: [~/shell/function]# cat factorial.sh #!/bin/bash function factorial { factorial=1 for (( i=1;i <= $1;i++ )) do factorial=$[ $factorial * $i ]

2016-11-25 22:26:01 352

转载 shell的概念

此博客来源于百度百科 什么是shellLinux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 shell是一个命令语言解释器,它拥有自

2016-11-24 20:56:54 458

转载 无线传感网——近距离通信技术

在通信和信息技术的不断发展,近距离的无线通信技术 只要通信收发双方通过无线电波传输信息且传输距离限制在较短范围(几十米)以内,就可称为短距离无线通信。 目前我们所看到的短距离无线技术都有其立足的特点,或基于传输速度、距离、耗电量的特殊要求;或着眼于功能的扩充性;或符合某些单一应用的特别要求;或建立竞争技术的差异化等,但是没有一种技术可以完美到足以满足所有的需求。 1、bluetooth 蓝牙:

2016-11-23 22:24:31 1250

原创 传感器网络协议栈

传感器网络协议栈 网络协议结构是网络的协议分层以及网络协议的集合,是对网络及其部件所应完成功能的定义和描述。虽然无线传感器网络与传统网络相比有很多不同的地方,但是其网络协议栈都可以划分成TCP/IP的五层模型,如表1所示。其中,物理层遵照IEEE 802.15.4标准提供简单但健壮的信号调制和无线收发技术;数据链路层又分成两个子层:逻辑链接控制层(LLC)和介质访问控制层(MAC),主要负责数据成帧

2016-11-22 18:41:11 1608

空空如也

空空如也

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

TA关注的人

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