C++_队列的两种实现方法
来源:互联网 发布:sunday算法 编辑:程序博客网 时间:2024/06/05 16:28
通过数组表示
#include <iostream>#define NULL 0using namespace std;class MyQueue{private: int *q; int front_, rear_,maxsize;public: MyQueue(int s) : maxsize(s+1) { q=new int(maxsize); front_=rear_=0; } ~MyQueue() { delete q; } bool AddQ(int t); bool DelQ(int &t); bool QFull(); bool QEmpty();};bool MyQueue::AddQ(int t){ rear_=(++rear_)%maxsize; if(rear_==front_) { cout << "The Queue is full" << endl; if(!front_) rear_=maxsize-1; else --rear_; return false; } else { q[rear_] = t; return true; }}bool MyQueue::DelQ(int &t){ if(front_==rear_) { cout << "The Queue is empty"; return false; } else { front_=(++front_)%maxsize; t=q[front_]; return true; }}bool MyQueue::QEmpty(){ if(front_==rear_) return true; else return false;}bool MyQueue::QFull(){ if((rear_+1)==front_) return true; else return false;}int main(){ MyQueue q(3); for(int i=0;i<3;i++){ int a; cin >> a; q.AddQ(a); } while(!q.QEmpty()) { int b; q.DelQ(b); cout << b << endl; } return 0;}
通过链表表示
#include <iostream>#define NULL 0using namespace std;class MyQueue{private: struct node { int data; node *link; }; node *front; node *rear;public: MyQueue() { front=NULL; rear=NULL; } ~MyQueue() { }public: bool QEmpty(); bool QAdd(int t); bool QDel(int &t);};bool MyQueue::QEmpty(){ if(front) return false; else return true;}bool MyQueue::QAdd(int t){ node *temp=new node; temp->data=t; //cout << t<<"#####"; if(!front) { front=temp; rear=temp; } else { temp->link=NULL; rear->link=temp; rear=temp; } //temp->link=rear; //rear=temp; return true;}bool MyQueue::QDel(int &t){ node *temp; if(QEmpty()) { cout << "The queue is empty" << endl; return false; } else { temp=front; front=front->link; t=temp->data; delete temp; return true; }}int main(){ MyQueue q; int a,b; for(int i=0;i<5;i++) { cin >> a; q.QAdd(a); } while(!q.QEmpty()) { int b; q.QDel(b); cout << b << endl; } //cout << "Hello world!" << endl; return 0;}
0 0
- C++_队列的两种实现方法
- 队列的两种实现方法
- Linux平台上C语言实现异步队列的两种方法
- (002)循环队列的两种C/C++实现
- 数据结构的C实现_链式队列
- 数据结构的C实现_循环队列
- 数据结构的C实现_循环队列
- Java数组实现循环队列的两种方法
- Java数组实现循环队列的两种方法
- 用队列实现栈的两种方法
- 黑马程序员_同步的两种实现方法
- 队列的两种C++实现
- 双队列的两种实现方式
- 队列的两种实现方式
- c语言strstr实现的两种方法
- C/C++ 实现htonf和ntof的两种方法
- C语言实现对半法查找的两种方法
- 两种方法实现队列---顺序表和链表
- 成绩转换
- 若操作系统没有加载网卡驱动,网卡虽然在系统设备树上,但网卡接口创建不了,那网卡实际能不能接收到数据?
- CCF 2013年12月 3题
- PHP中foreach的使用
- opengl 3.3做底层 QML做UI渲染
- C++_队列的两种实现方法
- HDU 1159 【基础DP 最长公共子序列】
- iOS开发: UITableViewCell的自适应高度
- base64编解码方法
- LeetCode Binary Search Tree Iterator
- CSS清除浮动
- nodejs与grunt
- 锋利的Jquery【读书笔记】 -- 第一章
- 23种设计模式彩图-设计模式之禅