零、说明
- 队列就是一种只能尾进头出的线性表,想象在排队
- 注意:由于队头指向元素,队尾指向队列最后一个元素后面的空位置空间,所以一个大小为n格的顺序队列,其真实可以存储的大小为n-1而不能存n个数据
一、数据类型
typedef struct Linequeue
{
int data[MAXSIZE];
int head,tail;
}Linequeue;
二、初始化
void Initial(Linequeue *Q)
{
Q->head=0;
Q->tail=0;
}
三、入出队列
- 入队列,又称Enque
void Enque(Linequeue *Q,int data)
{
if((Q->tail+1)%MAXSIZE!=Q->head)
{
Q->data[Q->tail]=data;
Q->tail=(Q->tail+1)%MAXSIZE;
}
else
{
cout<<"FULL"<<endl;
}
}
- 出队列
int Deque(Linequeue *Q)
{
int ret;
ret=-1;
if(Q->head!=Q->tail)
{
ret=Q->data[Q->head];
Q->head=(Q->head+1)%MAXSIZE;
}
else
{
cout<<"EMPTY"<<endl;
}
return ret;
}
- 得到队头
int Gethead(Linequeue *Q)
{
return Q->data[Q->head];
}
四、测试
int main()
{
Linequeue Q;
Initial(&Q);
for(int i=0;i<1000;i++)
{
Enque(&Q,i);
}
for(int i=0;i<50;i++)
{
cout<<Deque(&Q)<<' ';
}
cout<<endl;
for(int i=0;i<51;i++)
{
Enque(&Q,i);
}
cout<<Gethead(&Q)<<endl;
for(int i=0;i<1000;i++)
{
cout<<Deque(&Q)<<' ';
}
return 0;
}