头文件的实现
/**queue.h文件**/
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
#define error -1
#define queue_size 6
#define elem_type char
typedef struct queue{
unsigned int length;
unsigned int tail,head;
elem_type elem[queue_size];
}queue;
int init(queue &q);
int enqueue(queue &q,elem_type e);
int dequeue(queue &q,elem_type &e);
int queue_empty(queue q);
int queue_full(queue q);
int print_queue(queue q);
操作的实现
/**queue_opera.cpp文件**/
#include"queue.h"
/**队列初始化**/
int init(queue &q){
q.head=q.tail=1;
q.length=0;
return 1;
}
/**入队和出队**/
int enqueue(queue &q,elem_type e){
if(queue_full(q))
return 0;
else {
q.elem[q.tail]=e;
q.tail+=1;
if(q.tail==queue_size)
q.tail=0;
q.length+=1;
return 1;
}
}
int dequeue(queue &q,elem_type &e){
if(queue_empty(q))
return 0;
e=q.elem[q.head];
q.head+=1;
if(q.head==queue_size)
q.head=0;
q.length-=1;
return 1;
}
/**下溢和上溢**/
int queue_empty(queue q){
if(q.tail==q.head )
return 1;
else return 0;
}
int queue_full(queue q){
if(q.head==q.tail+1)
return 1;
else return 0;
}
int print_queue(queue q){
while(q.head!=q.tail){
cout<<q.elem[q.head]<<' ';
q.head+=1;
if(q.head==queue_size)
q.head=0;
}
cout<<"\nall over"<<endl;
return 1;
}
主函数文件(参考)
/**queuemain.cpp文件**/
#include"queue.h"
int main(){
queue q;
elem_type e;
init(q);
enqueue(q,'a');
enqueue(q,'b');
enqueue(q,'c');
enqueue(q,'d');
enqueue(q,'e');
enqueue(q,'f');
dequeue(q,e);
dequeue(q,e);
enqueue(q,'a');
enqueue(q,'b');
enqueue(q,'c');
enqueue(q,'d');
enqueue(q,'e');
enqueue(q,'f');
dequeue(q,e);
dequeue(q,e);
enqueue(q,'d');
enqueue(q,'e');
enqueue(q,'f');
enqueue(q,'g');
dequeue(q,e);
print_queue(q);
return 1;
}
执行结果如图