队列
#include <iostream>
#include <cstdlib>
#define maxn 5
using namespace std;
typedef struct
{
int data[maxn];
int head,tail;
}Squeue;
void init(Squeue *q)
{
q->head=q->tail=0;
}
void inSqueue(Squeue *q,int e)
{
if((q->tail+1)%maxn==q->head)
return ;
q->data[q->tail]=e;
q->tail=(q->tail+1)%maxn;
}
void outSqueue(Squeue *q)
{
if(q->tail==q->head)
return ;
q->head=(q->head+1)%maxn;
}
int Squeuelength(Squeue *q)
{
return (q->tail-q->head+maxn)%maxn;
}
int main()
{
Squeue q;
inSqueue(&q,10);
return 0;
}
链式队列
#include <iostream>
#include <cstdlib>
using namespace std;
typedef struct Node
{
int data;
struct Node *next;
}Node;
typedef struct
{
Node *head,*tail;
}LinkSqueue;
void init(LinkSqueue *q,Node *h)
{
q->head=q->tail=h;
}
void inSqueue(LinkSqueue *q,int e)
{
Node *p;
p=(Node *)malloc(sizeof(Node));
p->data=e;
p->next=NULL;
q->tail->next=p;
q->tail=p;
}
void outSqueue(LinkSqueue *q)
{
Node *p;
if(q->head==q->tail)
return ;
p=q->head->next;
q->head->next=p->next;
if(q->tail==p)
q->tail=q->head;
free(p);
}
int main()
{
Node h;
h.next=NULL;
LinkSqueue q;
init(&q,&h);
return 0;
}