mirror of
https://github.com/CodePanda66/CSPostgraduate-408.git
synced 2023-05-21 21:49:33 +08:00
✨ Add SqQueue2
This commit is contained in:
@@ -10,18 +10,18 @@
|
||||
typedef struct {
|
||||
int data[MaxSize];//
|
||||
int front,rear;//对头指针和队尾指针
|
||||
int size;//利用size变量记录队列长度,并用作判满的条件!有了size就不会浪费一个存储空间
|
||||
int tag;//利用tag变量记录最后一次操作是什么,0为删除,1为插入,并用作判满的条件!有了tag就不会浪费一个存储空间
|
||||
}SqQueue;
|
||||
|
||||
//初始化
|
||||
void InitQueue(SqQueue &Q){
|
||||
Q.rear=Q.front=0;//初始化时,队头队尾都指向0
|
||||
Q.size=0;//初试长度
|
||||
Q.tag=0;//初始化最后一次的操作状态
|
||||
}
|
||||
|
||||
//判空
|
||||
bool QueueEmpty(SqQueue Q){
|
||||
if(Q.size==0)//有了size,条件不一样了
|
||||
if(Q.front==Q.rear&&Q.tag==0)//有了tag,条件不一样了
|
||||
return true;
|
||||
else
|
||||
return true;
|
||||
@@ -29,24 +29,24 @@ bool QueueEmpty(SqQueue Q){
|
||||
|
||||
//入队操作
|
||||
bool EnQueue(SqQueue &Q,int t){
|
||||
if(Q.size==MaxSize)return false;//队满,注意这里的判满条件
|
||||
if(Q.front==Q.rear&&Q.tag==1)return false;//队满,注意这里的判满条件
|
||||
Q.data[Q.rear]=t;
|
||||
Q.rear=(Q.rear+1)%MaxSize;//通过取余操作让整个队列循环起来
|
||||
Q.size++;
|
||||
Q.tag=1;
|
||||
return true;
|
||||
}
|
||||
|
||||
//出队操作
|
||||
bool DeQueue(SqQueue &Q,int &x){
|
||||
if(Q.size==0)return false;//队空
|
||||
if(Q.rear==Q.front&&Q.tag==0)return false;//队空
|
||||
x=Q.data[Q.front];
|
||||
Q.front=(Q.front+1)%MaxSize;
|
||||
Q.size--;
|
||||
Q.tag==0;
|
||||
return true;
|
||||
}
|
||||
//获取队头元素,用x返回
|
||||
bool GetHead(SqQueue Q,int &x){
|
||||
if (Q.size==0)return false;
|
||||
if (Q.rear==Q.front&&Q.tag==0)return false;
|
||||
x=Q.data[Q.front];
|
||||
return true;
|
||||
}
|
||||
@@ -93,7 +93,11 @@ void TestQueue(){
|
||||
} else{
|
||||
printf("出队失败了,再检出一下吧!\n");
|
||||
}
|
||||
|
||||
if(QueueEmpty(Q)){
|
||||
printf("队空啦\n");
|
||||
} else{
|
||||
printf("队非空\n");
|
||||
}
|
||||
|
||||
printf("结束测试!\n");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user