循环队列模版(链表实现)

用链表实现循环队列,也是写几个常用功能,其实和循环列表大同小异 ,就是它的一个特殊形式而已。


文件"myqueue.h"

#include<iostream> using namespace std; template<class T> class My_queue; template<class T> class Node { private: T data; Node<T> *next; public: Node() { next=0; } Node(T d) { data=d; next=0; } friend My_queue<T>; }; template<class T> class My_queue { private: Node<T> *tail; public: My_queue() { tail=new Node<T>(); tail->next=tail; } ~My_queue() { clean(); delete tail; } bool empty() { return (tail->next==tail); } int size() { int length=0; Node<T> *p=tail->next; p=p->next; while(p!=tail->next) { length++; p=p->next; } return length; } void push(T d) { Node<T> *p=new Node<T>(d); p->next=tail->next; tail->next=p; tail=p; } T front() { if(empty()) { cout<<"queue is empty!"<<endl; exit(0); } Node<T> *p=tail->next; T data=p->next->data; return data; } T back() { if(empty()) { cout<<"queue is empty!"<<endl; exit(0); } T data=tail->data; return data; } void pop() { Node<T> *r=tail->next; Node<T> *q=r->next; r->next=q->next; if(q==tail) tail=r; delete q; } void clean() { Node<T> *p=tail->next; Node<T> *q=p->next; while(q!=p) { p->next=q->next; delete q; p->next=q; } cout<<"clean is finished!"<<endl; } };
测试代码"main.cpp"

#include"myqueue.h" int main() { My_queue<char> q; if(q.empty()) cout<<"queue is empty"<<endl; q.push('I'); q.push('L'); q.push('O'); q.push('V'); q.push('E'); q.push('U'); cout<<"Now the queue's size is: "<<q.size()<<endl; cout<<"queue's back() is "<<q.back()<<'\n'; cout<<"queue's front() is "<<q.front()<<endl; while(!q.empty()) { cout<<q.front()<<" "; q.pop(); } cout<<endl; return 0; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值