對於每一個隊列數據結構,我們保留一個數組theArray以及位置front和back,他們代表隊列的兩端。我們還要記錄實際存在於隊列中的元素的個數
currentSize。
要enqueue元素x,可將currentSize和back增1,然後置theArray[back]=x。
要dequeue一個元素,可以置返回值為theArray[front],將currentSize減1,再將front增1.
只要front或back到達數組的尾端,就繞回到開頭。這稱為循環數組實現。
[cpp] www.2cto.com
#include<stdio.h>
#define N 10
int front=0,back=-1,currentSize=0;
void enqueue(int *a,int m)
{
++back;
if(front==N)
front = 0;
if(back==N)
back = 0;
currentSize++;
a[back] = m;
}
int dequeue(int *a)
{
return a[front++];
currentSize--;
}
int main(int argc,char *argv[])
{
int a[N]={0};
int i;
for(i=0;i<N;i++)
enqueue(a,i);
enqueue(a,1);
// dequeue(a);
for(i=0;i<N;i++)
printf("%4d",a[i]);
return 0;
}