#include <stdio.h>
#include <stdlib.h>
#define Maxsize 10
typedef struct {
int data[Maxsize];
int rear, front;
//int size;//标定数量版
int tag; //标定上一次操作
}Sequence;
bool InitSq(Sequence &L)
{
L.rear = 0;
L.front = 0;
//L.size = 0; //size vision
L.tag = 0; //last op
return true;
}
bool EnSeq(Sequence &L, int num)
{
//if ((L.rear + 1) % Maxsize == L.front) //normal
//if (L.size==10) //size vision
if(L.rear==L.front&&L.tag==1)
return false;
L.data[L.rear] = num;
L.rear = (L.rear + 1) % Maxsize;
//tag vision
L.tag = 1;
//size vision
//L.size++;
return true;
}
bool OutSeq(Sequence &L, int &num)
{
/*normal
if (L.rear == L.front)
return false;
*/
//size vision
//if (L.size == 0)
//tag vision
if(L.rear==L.front&&L.tag ==0)
return false;
num = L.data[L.front];
L.data[L.front] = 0;
L.front = (L.front + 1) % Maxsize;
//size vision
//L.size--;
//tag vision
L.tag = 0;
return true;
}
int LengthSeq(Sequence L)
{
//tag vision and normal
return (L.rear + Maxsize - L.front) % Maxsize;
//size vision
//return L.size;
}
bool EmptySeq(Sequence L)
{
if (L.rear == L.front&&L.tag==0)
//if(L.size==0) //size vision
return true;
else
return false;
}
int main()
{
Sequence L;
InitSq(L);
EnSeq(L, 5);
EnSeq(L, 6);
EnSeq(L, 3);
EnSeq(L, 1);
int out;
OutSeq(L, out);
printf("go out %d\n", out);
printf("the len of seq:%d\n", LengthSeq(L));
printf("the Seq is %x now\n", EmptySeq(L));
return 0;
}
静态队列 -note
于 2021-06-01 19:51:35 首次发布