摘录


各位前辈,最近写一个程序遇到了一个问题,具体情况如下:
写的是循环队列;先看我自己写的一个,截取其中部分:

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 占用的的资源。所以不恨很明白其中的原因,望大神指导一下。

点评

NULL

原文

点击这里查看原文

其它

本帖内容由21QA云收藏工具自动生成,欢迎使用。

系统消息 若觉得内容不错,请点击左上角的"赞"图标,以优化网站的内容呈现。 另外,请及时验证注册邮箱,否则收不到21QA发出的红包。 官方Q群:250203055

asked 27 Nov '14, 00:21

%E8%B7%AF%E4%BA%BA%E7%94%B2's gravatar image

路人甲
131566603718

Be the first one to answer this question!
toggle preview

powered by O*S*Q*A

粤ICP备14040061号-1