打印
[C语言]

C语言循环队列问题

[复制链接]
1295|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
weplove|  楼主 | 2014-11-20 17:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位前辈,最近写一个程序遇到了一个问题,具体情况如下:
写的是循环队列;先看我自己写的一个,截取其中部分:
#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 占用的的资源。所以不恨很明白其中的原因,望大神指导一下。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

40

帖子

1

粉丝