顺序队列
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define max 5
typedef struct { int a[max];int front ;int rear;}que;
int init(que &d);
int come (que &d,int j);
int go (que &d,int &c);
int overflow (que &d);
int main()
{
int i,j,k,t;
que d;
init (d);
scanf ("%d",&t);
for (i=0;i<t;i++)
{
scanf ("%d",&j);
come (d,j);
}
overflow (d);
for (i=0;i<t;i++)
{
go(d,k);
printf ("%d ",k);
}
return 0;
}
int init(que &d)
{
d.front=d.rear=0;
printf ("Finsh\n");
printf ("最大容量%d否则溢出\n",max);
return 1;
}
int come (que &d,int j)
{
d.a[d.front]=j;
d.front++;
return 0;
}
int go (que &d,int &c)
{
c=d.a[d.rear];
d.rear++;
return 1;
}
int overflow (que &d)
{
if (d.front>=max)
{
printf ("Error:\\overflow_ \n");
exit (0);
}
}
链队列
#include <stdio.h>
#include <malloc.h>
typedef struct Qnode {int data ;struct Qnode *next;}Qnode,*QNode;
typedef struct {QNode front ;QNode rear;} Queue;
int init (Queue &Q);
int come (Queue &Q,int k);
int go (Queue &Q, int &t);
int main ()
{
Queue Q;
int i,j,k,t;
init (Q);
scanf ("%d",&j);
for (i=0;i<j;i++)
{
scanf ("%d",&k);
come (Q,k);
}
for (i=0;i<j;i++)
{
go (Q,t);
printf ("%d",t);
}
return 0;
}
int init (Queue &Q)
{
Q.front = Q.rear =(QNode)malloc (sizeof (Qnode));
Q.rear->next=Q.front->next=NULL;
printf ("Finsh\n");
return 1;
}
int come (Queue &Q,int k)
{
QNode p;
p=(QNode)malloc (sizeof (Qnode));
p->data=k;
p->next=NULL;
Q.rear->next=p->next;
Q.rear->next=p;
Q.rear=p;
return 1;
}
int go (Queue &Q, int &t)
{
QNode p;
p=Q.front->next;
t=p->data;
Q.front ->next=p->next;
}