wiisir 发表于 2015-8-5 15:04:48

请问有人做过循环队列吗?VB6里做觉得很麻烦啊.

请问有人做过循环队列吗?VB6里做觉得很麻烦啊(移动数据,删除数据,这是传统办法)
电脑一直要接收单片机数据,把这些数据放到循环队列里,以便处理.大神给点思路吧.谢谢啦

lcw_swust 发表于 2015-8-5 16:49:04

本帖最后由 lcw_swust 于 2015-8-5 16:53 编辑

不需移动数据,移动数组的序号即可
我相信以下代码用VB写也不复杂
U8 Que_Buf;

U8 Que_Count=0;//队列元素计数
U8 Que_Front=0;//队头
U8 Que_Rear=0;//队尾
//--------------------------------------------------
//写队列
//--------------------------------------------------
void QueWrite(U8 din)
{
        if(Que_Count<QBUFSIZE)
        {
                Que_Count++;
                Que_Buf=din;
                Que_Rear++;
                if(Que_Rear>=QBUFSIZE)Que_Rear=0;
        }
}
//--------------------------------------------------
//读取队列
//--------------------------------------------------
U8 QueRead(void)
{
        U8 ret=0;
        if(Que_Count>0)
        {
                Que_Count--;
                ret=Que_Buf;
                Que_Front=Que_Front+1;
                if(Que_Front>=QBUFSIZE)Que_Front=0;
        }
        return ret;
}
//--------------------------------------------------
//队列满(返回1)
//--------------------------------------------------
U8 QueFull(void)
{
        U8 ret;
        ret=(Que_Count==QBUFSIZE);
        return ret;
}
//--------------------------------------------------
//队列空(返回1)
//--------------------------------------------------
U8 QueEmpt(void)
{
        return (Que_Count==0);
}
//--------------------------------------------------
//队列清空
//--------------------------------------------------
void QueClear(void)
{
        Que_Count=0;
        Que_Front=0;
        Que_Rear=0;
}

modbus 发表于 2015-8-5 17:42:45

用VB6做很简单,原理和上面一样,可建一个类型,三个成员,一个是数据数组,另两个是指针

pandong 发表于 2015-8-5 18:16:53

循环队列,以前VB上查过,有的,好好找找。

wiisir 发表于 2015-8-5 20:03:51

谢谢你们.
"不需移动数据,移动数组的序号即可"。到时存满了,又重头来存?
本人愚钝,不太理解
页: [1]
查看完整版本: 请问有人做过循环队列吗?VB6里做觉得很麻烦啊.