求教关于环形队列的问题????
环形队列中的队满条件是 ~~~
(q->rear+1)%Maxsize==q->front
谁能解释下????
[解决办法]
是不是因为设成%Maxsize是因为要适应不同的初始值
因为insert一个队列元素的时候: q->rear = (q->rear+1)%MAXSIZE;
那如果q->front初始值为零时,当然可以用q->rear = q->front + Maxsize -1来判断,但如果q->front初始值不是零就要用你贴得判断了
[解决办法]
/*
*本程序是一个双循环队列
*作者:舒稳 计算机07级04班
*最后修改时间:2008.12.4
*/
#include "stdio.h"
#include "stdlib.h"
#ifndef Que
#pragma pack(1)
typedef struct QUE
{
int data;
struct QUE *pro;
struct QUE *next;
}Que;
#endif
void main(void )
{
Que *que;
Que *creatque(Que *que);
void enque(Que *que);
void deque(Que *que);
que=creatque(que);
int n=9;
while(n>0)
{
enque(que);
n--;
}
deque(que);
printf("\n\n");
}
Que *creatque(Que *que)
{
que=(Que *)malloc(sizeof(que));
que->next=que;
que->pro=que;
return que;
}
/*下面为进队列*/
void enque(Que *que)
{
Que *node;
node=(Que *)malloc(sizeof(Que));
if(node==NULL)
return ;
printf("please input a integer num:");
int num;
scanf("%d",&num);
fflush(stdin);
node->data=num;
/*下面为交换结点指针的重点*/
que->pro->next=node;
node->pro=que->pro;
que->pro=node;
node->next=que;
}
void deque(Que *que)
{
if(que->next==que->pro)
{
printf("空队列!\n");
return ;
}
Que *node=que;
Que *pt;
node=node->next;
while(node!=que)
{
printf("%d\n",node->data);
pt=node;
node=node->next;
free(pt);
}
}
楼主可能会用到.