您的位置:首页 > 编程语言 > C语言/C++

队列的实现C++

2013-03-30 21:06 375 查看
头文件的实现

/**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;
}

执行结果如图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: