各位前辈,最近写一个程序遇到了一个问题,具体情况如下:
写的是循环队列;先看我自己写的一个,截取其中部分:
#define MAXSIZE 100
unsigned char Queue[MAXSIZE] = {0};
unsigned char front;
unsigned char rear;
BOOL FullQueue() //判断是否队满
{
if(front == (rear+1)%MAXSIZE )
return TRUE;
else
return FALSE;
}
BOOL EmptyQueue() //判断是否对空
{
if(rear == front)
return TRUE;
else
return FALSE;
}
void EnQueue( unsigned char value) //入队
{
if(!FullQueue())
{
Queue[rear] = value;
rear = (rear + 1) % MAXSIZE;
}
}
unsigned char DeQueue(void) //出队
{
if(!EmptyQueue())
{
unsigned char value;
value = Queue[front];
front = (front + 1) % MAXSIZE;
return value;
}
}
程序功能正常,但是因为我看到别人网上写的循环队列都是用结构体写的,所以自己也试了一下:
#define MAXSIZE 100
typedef struct QUEUE
{
unsigned char elem[MAXSIZE];
unsigned char front;
unsigned char rear;
}QUEUE;
BOOL FullQueue(QUEUE Q)
{
if(Q.front == (Q.rear+1)%MAXSIZE )
return TRUE;
else
return FALSE;
}
BOOL FullQueue(QUEUE Q)
{
if(Q.front == (Q.rear+1)%MAXSIZE )
return TRUE;
else
return FALSE;
}
void EnQueue(QUEUE Q , unsigned char value)
{
if(!FullQueue(Q))
{
Q.elem[Q.rear] = value;
Q.rear = (Q.rear + 1) % MAXSIZE;
}
}
unsigned char DeQueue(QUEUE Q)
{
unsigned char value;
value = Q.elem[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return value;
}
编译下来,使用结构体的程序 MAXSIZE=35 就达到了没有使用结构体 MAXSIZE = 150 占用的的资源。所以不恨很明白其中的原因,望大神指导一下。
|