首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求教关于环形队列的有关问题?

2012-02-16 
求教关于环形队列的问题????环形队列中的队满条件是 ~~~(q-rear+1)%Maxsizeq-front谁能解释下????[解

求教关于环形队列的问题????
环形队列中的队满条件是 ~~~
(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);
}
}


楼主可能会用到.

热点排行