队列是先进先出的一种结构,有链式的链队列也有基于数组实现的那啥循环队列。注意这不同于那个顺序表,可以直接空间不够了,赋空间,因为这个是队列的先进先出结构,噫想成一个环,不好增大空间。
#include <iostream>
#include <stdlib.h>
#define maxsize 4
#define ERROR 0
#define OK 1
typedef int Elemtype;
using namespace std;
typedef struct Queue
{
Elemtype *base;
int front;
int rear;
}queue;
int InitQueue(queue &q)
{
q.base=(Elemtype *)malloc(maxsize*sizeof(Elemtype));
if(!q.base)
{
return ERROR;
}
q.front=q.rear=0;
}
int Enqueue(queue &q,Elemtype e)
{
if((q.rear+1)%maxsize==q.front)
{
return ERROR;
}
q.base[q.rear]=e;
q.rear=(q.rear+1)%maxsize;
}
int Dequeue(queue &q,Elemtype &e)
{
if(q.rear==q.front)
{
return ERROR;
}
e=q.base[q.front];
q.front=(q.front+1)%maxsize;
}
void InsertQueue(queue q)
{
while(q.base[q.front])
{
cout<<q.base[q.front]<<endl;
++q.front;
}
}
int main()
{
queue a;
InitQueue(a);
for(int i=0;i<=2;i++)
{
int x;
cin>>x;
Enqueue(a,x);
}
for(int i=0;i<=1;i++)
{
int x;
Dequeue(a,x);
}
InsertQueue(a);
}
int这个可以有return 可以没有 return 但是函数内要有return 语句,必须得有int 函数类型。
删除不是真正的删除
因为q. base[0]还可以输出数来。