环形数组例程

转载 2015年07月09日 16:39:14

一个简单的环形数组例程,参考了网络上的资源。

#define CIRCLEBUFFER_SIZE    8
unsigned char CircleBuffer[CIRCLEBUFFER_SIZE];
unsigned char WriteIndex = 0;
unsigned char ReadIndex = 0;
unsigned char LeftSize = 0;

//检查是否有到数组末尾了
unsigned char Check_CircleBuffer(unsigned char i)
{
    return(i + 1) ==  CIRCLEBUFFER_SIZE?0:i+1; 
}

//从环形数组里读取数据
unsigned char Read_CircleBuffer_Data(void)
{
    unsigned char Pos;
    if(LeftSize > 0)
    {
        Pos = ReadIndex;
        ReadIndex = Check_CircleBuffer(ReadIndex);
        LeftSize--;
        return CircleBuffer[Pos];
    }
    return 0;
}

//往环形数组内写入数据
void Write_CircleBuffer_Data(unsigned char Data)
{
    if(LeftSize < CIRCLEBUFFER_SIZE)
    {
        CircleBuffer[WriteIndex] = Data;
        WriteIndex = Check_CircleBuffer(WriteIndex);
        LeftSize++;
    }
}

void main(void)
{
    Write_CircleBuffer_Data(1);
    Read_CircleBuffer_Data();
}

算法-一种数组环形队列的数据结构

概述在《ESP8266-app_IR_TxRx_demo中的RingBuf代码透析》中,本作者分析了ESP8266示例代码里面的数组环形队列,该环形队列可以用于单片机等资源受限的嵌入式平台。后来在《算...

c语言数据结构实现-数组队列/环形队列

队列的数据结构其实非常简单,实现方式主要为动态的链式结构或者为静态的数组结构,本文介绍一种静态的数组结构 使用数组队列类似于牺牲空间换时间的方法,实现简单。但要求用户数据必须定长,并且会出现队列满的情...

数组实现的 环形队列

C++数据结构环形队列Deque实现 标签: c++数据结构队列 2015-11-03 15:25 962人阅读 评论(0) 收藏 举报  分类: C/C++(5)  ...

环形缓冲区的实现原理与例程

在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。 1、环形缓冲区的实现原理 环形缓冲区通常有一...

java例程练习(数组复制与arraycopy)

//数组拷贝 public class Test { public static void main(String[] args) { String[] s = {"Microsof...

算法导论例程——最大子数组问题

最大子数组描述的是这样的一个问题:给定一个整型数组a[],规模为n,求其中连续的m个元素之和使其最大。其中这m个元素被称为是数组a的子数组。         最大子数组问题的求解过程可以分成三种情况,...
  • CFhM_R
  • CFhM_R
  • 2016年02月03日 01:42
  • 276

第4周 C语言及程序设计提高例程-18 一维数组应用二三例

1、应用1: 利用数组求Fibonacci数列的前20项 问题及代码: #include int main( ) { int i; int f[20]= {1,1}; for...

第10周 C语言及程序设计提高例程-36 多维数组作函数参数

问题及代码: /*用多维数组名作函数参数*/ #include int max_value(int array[][4]); int main() { int a[3][4]={{11,...

C语言及程序设计提高例程-24 数组名作为函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解用数组元素作函数实参#include int gcd(int m,int n) { int r; while(r=m%n) {...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:环形数组例程
举报原因:
原因补充:

(最多只允许输入30个字)