只要连续入队就导致32死机,我队列只创建40字节的数据领,不可能内存不够,会不会是队列的操作有错,可是我在VC中试过正常啊。
#include <stdio.h>
#include <stdlib.h>
#define uint8_t unsigned char
typedef struct queue
{
uint8_t *data; //数据域
uint8_t head; //队首
uint8_t tail; //队尾
uint8_t len; //队列长度
}*pQueue,Queue;
/*********队列是否为空************/
uint8_t Empty(pQueue p)
{
if(p->head==p->tail)
{
return 1;
}
return 0;
}
/*********队列是否为满************/
uint8_t Impletion(pQueue p)
{
if( (p->tail+1)%p->len == p->head)
{
return 1;
}
return 0;
}
/*********创建队列************/
pQueue QueueCreate(uint8_t len)
{
pQueue newQueue = (pQueue)malloc(sizeof(Queue));
newQueue->data=(uint8_t*)malloc(len);
newQueue->len=len;
newQueue->head=0;
newQueue->tail=0;
return newQueue;
}
/*********入队***************/
uint8_t Enqueue(pQueue p,uint8_t data)
{
if(Impletion(p)) //判断队列是否为满
{
return 0; //入队失败
}
p->data[p->tail]=data;
p->tail=(p->tail+1)%p->len;
return 1; //入队成功
}
/*********出队***************/
uint8_t Dequeue(pQueue p,uint8_t *data)
{
if(Empty(p))
{
return 0;//失败,队列空
}
*data=p->data[p->head];
p->head=(p->head+1)%p->len;
return 1;
}
一周热门 更多>