| 
 
| 各位前辈,最近写一个程序遇到了一个问题,具体情况如下: 写的是循环队列;先看我自己写的一个,截取其中部分:
 #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 占用的的资源。所以不恨很明白其中的原因,望大神指导一下。
 
 | 
 |