赞
踩






//初始化
void InitQueue(SqQueue &Q){
Q.front=Q.rear=0;
}
//判断是否为空
bool QueueEmpty(SqQueue Q){
if(Q.front==Q.rear)
return false;
else
return true;
}

队列已经满了的判断条件
队列已满的条件:rear==MaxSize ???

bool EnQueue(SqQueue &Q,int x){
//判断队列是否已满
if((Q.rear+1)%MaxSize==Q.front)
return false;
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%MaxSize;
return true;
}
形成循环队列

bool BeQueue(SqQueue &Q,int &x){
if(Q.front==Q.rear)
return false;
x=Q.data[Q.front];
Q.front=(Q.front+1)%MaxSize;
return true;
}
bool GerHead(SqQueue Q,int &x){
if(Q.front==Q.rear)
return false;
x=Q.data[Q.front];
return true;
}
队列中的元素个数
(rear+MaxSize-front)%MaxSize

定义一个size,满是size=MaxSize,空是size=0

定义一个tag,删除操作tag=0,插入操作tag=1,判断,
队满:front==rear&&tag==1,队空:front==rear&&tag==0

两种对尾指向的方式

牺牲一个空间,判断对满,还是队空





void InitQueue(LinkQueue &Q){
Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
Q.front=NULL;
}

void EnQueue(LinkQueue &Q,int x){
LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
Q.rear->next=s;
Q.rear=s;
}






Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。