![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
文章平均质量分 57
涛涛声依旧
开始牛逼的嵌入式开发之旅。
展开
-
数据结构(数据的艺术)
1. 数据结构起源 数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系。 数据----程序的操作对象,用于描述客观事物。 数据的特点: 可以输入到计算机 可以被计算机程序处理。 数据是一个抽象的概念,将其进行分类原创 2016-04-04 16:44:27 · 307 阅读 · 0 评论 -
队列 线性队列
#ifndef _SEQLIST_H_#define _SEQLIST_H_typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);void SeqList_Destroy(SeqList* list);void SeqList_Clear(SeqList* list原创 2016-06-25 17:51:12 · 483 阅读 · 0 评论 -
链式存储队列
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next;};LinkList* LinkList_Create();vo原创 2016-06-25 23:07:16 · 303 阅读 · 0 评论 -
线性队列的改变
#ifndef _SEQQUEUE_H#define _SEQQUEUE_Htypedef void SeqQueue;SeqQueue* SeqQueue_Create(int capacity);void SeqQueue_Destroy(SeqQueue* queue);void SeqQueue_Clear(SeqQueue* queue);int SeqQueu原创 2016-06-27 16:08:46 · 249 阅读 · 0 评论 -
用栈来表示队列
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next;};LinkList* LinkList_Create();vo原创 2016-06-28 23:37:55 · 392 阅读 · 0 评论 -
通用树结构的链式存储
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next; }; LinkList* LinkList_Create()原创 2016-06-29 23:27:00 · 496 阅读 · 0 评论 -
链式存储的LinkList.h代码
1. LinkList.h#ifndef _LINKLIST_H#define _LINKLIST_Htypedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode { LinkListNode* next;};LinkList* LinkList_Creat();void L原创 2016-06-21 14:03:36 · 2092 阅读 · 0 评论 -
链式存储
#ifndef _LINKLIST_H#define _LINKLIST_Htypedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode { LinkListNode* next;};LinkList* LinkList_Creat();void原创 2016-06-21 14:08:42 · 241 阅读 · 0 评论 -
链表LinkList.c实现
#include "LinkList.h"#include #include typedef struct _tag_LinkList{ LinkListNode header; int length;}TLinkList;LinkList* LinkList_Create(){ TLinkList *sList = (TLinkList*)mall原创 2016-06-21 18:06:35 · 512 阅读 · 1 评论 -
链表的测试程序
#include #include #include "LinkList.h"struct Value{ LinklistNode header; int v;};int main(int argc , char *argv[]){ LinkList* list = LinkList_Create(); int i = 0;原创 2016-06-21 18:32:25 · 289 阅读 · 0 评论 -
循环链表
1.游标的定义 。定义一个当前指针。2 获取当前游标指向的数据元素。3 将游标重置指向链表中的第一个数据元素 4 将游标移动指向到链表中的下一个数据元素。5 直接指定删除链表中的某个数据元素。#ifndef _CIRCLELIST_H_#define _CIRCLELIST_H_typedef void CircleList;typede原创 2016-06-22 14:46:58 · 197 阅读 · 0 评论 -
栈 顺序结构的实现
1 实现原理,复用了线性表的顺序结构。 栈最大特点:后进先出。 具体代码如下:#ifndef _SEQLIST_H_#define _SEQLIST_H_typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);void SeqList_Des原创 2016-06-23 09:49:22 · 382 阅读 · 0 评论 -
栈的链式 结构实现
1.这个继承了线性链表的特性。#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next;};LinkList* L原创 2016-06-23 14:46:51 · 314 阅读 · 0 评论 -
c语言基础<5>
逻辑运算符使用分析逻辑运算符&&,||和!的使用技巧。 #include int main(){ int i = 0; int j = 0; if(++i>0 || ++j>0) { printf("%d\n",i); printf("%d\n",j); } return 0;}程序中的短路:短路规则:||从左边开原创 2016-04-11 00:35:11 · 511 阅读 · 0 评论 -
c语言 指针
1.指针本质指针本质也是一个变量。指针需要占用一定的内存空间指针用于保存内存地址的值。不同类型的指针占用的内存空间大小相同。在指针声明时,*号表示所声明的变量为指针。在指针使用时,*号表示取指针所指向的内存空间中的值。 常量与指针const int* p; //p可变,p指向的内容不可变 int const* p原创 2016-04-14 00:02:56 · 281 阅读 · 0 评论 -
程序的灵魂 ---算法
1 数据结构与算法 数据结构只是静态的描述了数据元素之间的关系。 高效的程序需要在数据结构的基础上设计和选择算法。 高效的程序 { 1.恰当的数据结构 2.合适的算法} 算法是特定问题求解步骤的描述 ,原创 2016-04-04 17:52:32 · 439 阅读 · 0 评论 -
数据结构 线性表
1. 线性表的本质线性表的定义: 线性表(List)是零个或多个数据元素的集合。线性表中的数据元素之间是有顺序的。线性表中的数据元素个数是有限的。线性表中的数据元素的类型必须相同。专业定义:线性表是具有相同类型的n(>=0)个数据元素的有限序列(a1,a2,。。。。an) (n>=0) 性质:a0 为线性表的第一个元素,原创 2016-04-04 22:17:12 · 267 阅读 · 0 评论 -
线性表 顺序存储
1. 顺序存储在c语言中可以用一维数组来实现顺序存储结构。存储空间的起始位置:数组node线性表的最大容量:数组长度MAXSIZE线性表的当前长度:length#define MAXSIZE 20typedef struct _tag_List{char node[MAXSIZE];int length;}List;原创 2016-04-04 23:44:11 · 296 阅读 · 0 评论 -
数据结构 线性表
#ifndef _SEQLIST_H_#define _SEQLIST_H_typedef void SeqList;typedef void SeqListNode;SeqList* SeqList_Create(int capacity);void SeqList_Destroy(SeqList* list);void SeqList_Clear(S原创 2016-04-06 07:09:16 · 372 阅读 · 0 评论 -
数据结构 线性表
#include #include #include "SeqList.h"typedef unsigned int TSeqListNode;typedef struct _tag_SeqList{ int capacity; int length; TSeqListNode* node;}TSeqList;SeqList* SeqList_Create(int cap原创 2016-04-06 07:11:27 · 248 阅读 · 0 评论 -
数据结构 链式存储
/* 链式存储定义:为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。 链式存储逻辑结构n个结点连接成一个链式线性表的结构叫做链表。当每个结点中包含一个指针域时,叫做单链表。 链表的基本概念表头结点:链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息。数据结点:原创 2016-04-06 07:13:29 · 745 阅读 · 0 评论 -
数据结构 链式存储源码
#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void LinkList;typedef struct _tag_LinkListNode LinkListNode;struct _tag_LinkListNode{ LinkListNode* next; }; LinkList* LinkList_Create()原创 2016-04-06 07:17:03 · 383 阅读 · 0 评论 -
c语言基本概念
1.基本数据类型分析: 数据类型可以理解为固定内存大小的别名。数据类型是创建变量的模子。类型的本质:1 byte char2 byte short4 byte int变量本质:变量是一段实际连续存储空间的别名。程序中通过变量来申请并命名存储空间。通过变量的名字可以使用存储空间 #include int main(){ char c = 0原创 2016-04-07 18:39:39 · 465 阅读 · 0 评论 -
c语言基础概念(2)
3.分支语句分析 --ifif语句用于根据条件选择执行语句else不能独立存在且总是与它最近的if相匹配else语句后可以接连其他if语句。if(codition){ //statiement 1} else{ //statement 2}if语句中零值比较的注意点bool型变量应该直接出现于条件中,不要进行原创 2016-04-07 18:41:59 · 278 阅读 · 0 评论 -
c语言基础概念(3)
4.void的意义void修饰函数返回值和参数 如果函数没有返回值,那么应该将其声明为void型如果函数没有参数,应该声明其参数为voidvoid修饰函数返回值和参数仅为了表示无不存在void变量c语言没有定义void究竟是多大内存的别名。void指针的意义c语言规定只有相同类型的指针才可以相互赋值。void* 指针作为左值用于“接收”任意类型的原创 2016-04-07 18:45:05 · 388 阅读 · 0 评论 -
linux驱动
1.使用字符设备驱动程序1) 编译/安装驱动2)创建设备文件3)访问设备1) 在linux系统中,驱动程序通常采用内核模块的程序结构进行编码。因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。 驱动名 memdev.c #include #include #include #include #include int原创 2016-04-12 00:03:43 · 487 阅读 · 0 评论 -
字符驱动分析
1.使用字符设备驱动程序 1) 编译/安装驱动 2)创建设备文件 3)访问设备 1) 在linux系统中,驱动程序通常采用内核模块的程序结构进行编码。 因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。 驱动名 memdev.c #include #include #include #include #includ原创 2016-04-13 21:46:12 · 401 阅读 · 0 评论 -
C语言基础知识<6>
1.#pragma简介#pragma是编译器指示字,用于指示编译器完成一些特定动作。#pragma所定义的很多指示字是编译器和操作系统特有的 #pragma在不同的编译器间是不可移植的 一般用法:#pragma parameter 不同的parameter参数语法和意义各不相同。#pragma messagemessage参数在大多数的编译器中原创 2016-04-13 22:48:40 · 257 阅读 · 0 评论 -
makefiel制作
1.autoscan首先运行autoscan命令,它会在给定目录及其子目录树中检查源文件,若没有给出目录,就在当前目录及其子目录树中进行检查。它会搜索源文件以寻找一般的移植性问题并创建一个文件件“configure.scan”,该文件就是接下来autoconf要用到的“configure.in”原型。2.autoconfconfigure.in是au原创 2016-11-30 08:49:46 · 322 阅读 · 0 评论