- 博客(20)
- 收藏
- 关注
原创 队列的数据结构及基本运算
1 特点插入在队列头(front)进行,删除在队列尾(rear)进行,简称先进先出(first in first out)2 数据结构定义typedef struct{ int queue[MAXSIZE]; int front; int rear;}sequeue;sequeue *q;入队列操作q->queue[++q->rear] = x;出队列操作q-
2013-11-20 23:12:43 964
原创 栈数据结构及基本运算
定义操作受限的线性表,限定对元素的插入和删除只能在表的一端进行。数据结构定义#define MAXSIZE 100typedef struct{ int data[MAXSIZE]; int top;}STACK_S;通常把0作为栈底,栈空时,栈顶指针top = -1;栈满时,top = MAXSIZE-1;操作:入栈时,top++;出栈时,top--;
2013-10-10 23:08:10 599
转载 程序员,如何在工作中崭露头角?
摘要:程序员是很特别的个体,有的人在IT这个行业里取得了成功;有的人对自己的现状很满意,于是就一直在一家公司的一个岗位上干了很多年;还有一部分人被炒鱿鱼了。那么作为一个特别的程序员,如何能在工作中崭露头角呢?文章作者 Yuriy Lopotun有着8年的IT工作经验,分别在4家不同的公司。在这期间有幸和一些程序员一起共事,他们都很特别:有的人在这个行业里取得了成功;有的人对自己的现状很
2013-10-08 22:13:49 515
原创 windows下C调用socket实现TCP和UDP通信
TCP SERVER实现#include#include#include#include#include #pragma comment( lib, "ws2_32.lib" )#define PORT 2046#define BACKLOG 10#define TRUE 1void main( void ){ int iServerSock; int iCl
2013-09-26 23:25:48 1508
转载 linux链表管理-先转,待编辑
linux链表,是一种非常实用,方便的链表管理。 链表数据结构的定义很简单(节选自[include/linux/list.h],以下所有代码,除非加以说明,其余均取自该文件): struct list_head { struct list_head *next, *prev; }; list_head结构包含两个指向list_head结构的指针prev和
2013-09-25 23:21:00 469
原创 链表数据结构与基本运算
定义链式存储结构特点通过链指针来表示数据元素之间的逻辑关系,而非顺序存储结构插入,删除方便。容易扩充表容量。数据结构typedef struct node{ int data; struct node *next;}linklist;基本运算使用带头结点的单链表// creat linklistlinklist *creat_linkl
2013-09-22 22:36:27 467
原创 顺序表数据结构及基本运算
1、定义 借组数组开辟地址连续的存储空间。2、特点 1、地址连续的存储单元 2、最简单的,最自然的存储方法。3、数据结构描述#define MAXSIZE 100typedef struct{ int data[MAXSIZE]; int last;}sequencelist;sequencelist *seqlist;
2013-09-22 00:05:14 712
转载 C语言嵌入式系统编程修炼之道——性能优化篇
1.使用宏定义在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个: 错误做法:#define MIN(A,B) ( A 正确做法:#define MIN(A,B)((A)<= (B) ? (A) : (B) )对于宏,我们需要知
2013-09-21 22:52:17 526
转载 C语言嵌入式系统编程修炼之道——内存操作篇
数据指针在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力。在嵌入式系统的实际调试中,多借助C语言指针所具有的对绝对地址单元内容的读写能力。以指针直接操作内存多发生在如下几种情况:(1) 某I/O芯片被定位在CPU的存储空间而非I/O空间,而且寄存器对应于某特定地址;(2) 两个CP
2013-09-21 22:50:57 597
转载 C语言嵌入式系统编程修炼之道——软件架构篇
1.模块划分模块划分的“划”是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念:(1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;(2
2013-09-21 22:49:59 654
转载 想成为嵌入式程序员应知道的0x10个基本问题
C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这是个愚蠢的问题吗?如要你答出某个字
2013-09-21 22:44:31 497
转载 多任务程序看门狗设计
看门狗一般分为硬件看门狗和软件看门狗,主要用来解决程序CPU异常,程序跑飞挂死等问题,提高系统的可靠性。 看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序出现故障,不在定时周期内复位看门狗,就使得看门狗定时器溢出产生复位信号并
2013-09-21 18:02:39 1018
转载 多任务下看门狗程序实现
探讨多任务下喂狗的方式一直以来,我不断的探索RTOS的使用方法,以UC/OS-II为基础。当然努力的结果是逐渐形成了一个可以使用的软件平台。但我意识到如果没有相应文档的支持或许这个东西也许只有我自己能使用了。另外提高的空间有限。所以今天就从这个困扰我许久的问题入手,慢慢的介绍我这两年来努力的成果。关于多任务下如何才能有效的使用看门狗这个问题其实也不是很难。关键是在于喂狗的策略。你没办法
2013-09-21 17:59:59 3066
转载 多任务程序看门狗结构设计
看门狗一般分为硬件看门狗和软件看门狗,主要用来解决程序CPU异常,程序跑飞挂死等问题,提高系统的可靠性。 硬件看门狗,由硬件电路组成,主要有独立的看门狗芯片。一般嵌入式芯片或者单片机芯片中都设计了看门狗电路。看门狗分硬件看门狗和软件看门狗。硬件看门狗是利用一个定时器电路,其定时输出连接到电路的复位端,程序在一定时间范围内对定时器清零(俗称“喂狗”),因此程序正常工作时,定时器总不能溢
2013-09-21 17:50:14 1156
原创 假如生活欺骗了你
(俄)普希金–假如生活欺骗了你假如生活欺骗了你不要悲伤 不要心急忧郁的日子里须要镇静相信吧 快乐的日子将会来临心儿永远向往着未来现在却常是忧郁一切都是瞬息一切都将会过去而那过去了的就会成为亲切的回忆
2013-09-13 21:27:12 494
原创 基本数据结构
1、字符串--字符串匹配,KMP算法2、顺序表--存储结构与基本运算3、链表-单链表,双链表,双向循环链表(linux链表),基本运算,链表使用和各种题型4、栈-顺序栈和链栈,基本运算,递归思想5、队列-顺序队列和链式队列,基本运算6、广义表-存储结构,基本运算,以及十字链表7、二叉树8、图与网9、算法复杂度评价,时间与空间效率 ,大O表示9、检索10、排序
2013-09-11 23:41:49 458
原创 OJ练习1
给出一段数据流,如7e7e7e020301067e7e7e0301010106帧头为等于或大于3个7e7e7e 则后面为有效报文,紧接着1个字节为报文长度,报文长度n有效范围 【1,64】之后为连续n个字节的报文内容,报文内容之后一个字节为报文校验位check。只有报文内容+报文长度 = 报文校验位 则报文有效否则为无效,丢弃。从下一个字节开始找新的帧头。如果当中也出现无效报文,则从下一个字节找新
2013-09-09 23:52:47 644
原创 C语言学习笔记2
1、运算符的优先级和结合方向,看多了也就记住了。2、#define 和#undef(撤销已定义的宏名) #line 例子 #line number["filename"]改变当前行数和文件名称 #error 编译程序是遇到#error就会生成错误提示并停止编译,例如,#error this is error info!#pragram 向编译器传送各种指令3、#d
2013-09-08 23:33:39 527
原创 C语言学习笔记
1、register关键字,声明为寄存器变量,这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址,这样提高访问效率。ARM处理器通用寄存器R0-R15,定义太多register变量不可能全部分配到寄存器使用。 register使用的限制,必须是单个的值,并且其长度应小于或等于整形的长度。而且register变量可能不存放在内存中,所以不能用&来取其地址。2
2013-09-08 00:05:57 478
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人