C++ 双向队列链式实现和队列的顺序实现
来源:互联网 发布:java项目开发源代码 编辑:程序博客网 时间:2024/06/11 06:05
双向队列采用双向链表实现
dequeue.h
#ifndef _DEQUEUE_H#define _DEQUEUE_Htypedef int DataType; class Node{private: DataType data;public: Node *next; Node *prior; Node(DataType val); ~Node(); DataType get_data();};class DeQueue{private: Node *begin;//指向队头 Node *end;//指向队尾public: DeQueue(); ~DeQueue(); int push_back(DataType val);//在队尾添加一个元素 int pop_back();//在队尾删除一个元素 int push_front(DataType val);//在队头添加一个元素 int pop_front();//在队头删除一个元素 int empty();//队列为空时返回1 void print();};#endif
dequeue.cpp
#include "dequeue.h"#include <iostream>Node::Node(DataType val){ data = val; next = 0; prior = 0;}Node::~Node(){}DataType Node::get_data(){ return data;}DeQueue::DeQueue(){ begin = 0; end = 0;}DeQueue::~DeQueue(){}int DeQueue::push_back(DataType val){ Node *node = new Node(val); if(empty())//链表为空时 { begin = end = node; return 0; } end->next = node; node->prior = end; end = node; return 0;}int DeQueue::pop_back(){ if(empty()) return -1; Node *p = end; if(!begin->next)//链表只有一个节点时 { delete p; begin = end = 0; return 0; } end = end->prior; end->next = 0; delete p; return 0;}int DeQueue::push_front(DataType val){ Node *node = new Node(val); if(empty())//链表为空时 { begin = end = node; return 0; } node->next = begin; begin->prior = node; begin = node; return 0;}int DeQueue::pop_front(){ if(empty()) return -1; Node *p = begin; if(!begin->next)//只有一个节点时 { delete p; begin = end = 0; return 0; } begin->next->prior = 0; begin = begin->next; delete p; return 0;}int DeQueue::empty(){ if((end == begin) && (0 == end))//链表为空时 return 1; return 0;}void DeQueue::print(){ Node *p = begin; std::cout<<"print :"<<std::endl; while(p) { std::cout<<p->get_data()<<" "<<std::endl; p = p->next; } p = end; std::cout<<"print reverse:"<<std::endl; while(p) { std::cout<<p->get_data()<<" "<<std::endl; p = p->prior; }}
顺式队列采用数组实现
queue.h
#ifndef _QUEUE_H#define _QUEUE_H#define MAX_SIZE 4typedef int DataType;class Queue{private: DataType q[MAX_SIZE]; int currentSize;//记录当前队列含有的数目 int front;//记录队头位置 int end;//记录队尾位置的后面一位public: Queue(); ~Queue(); int empty();//队列为空时返回1 int dequeue();//从队头出队 int enqueue(DataType val);//从队尾入队 int full();//队列满时返回1 DataType queue_front();//获取队首元素 DataType queue_end();//获取队尾元素 void print();};#endif
queue.cpp
#include "queue.h"#include <iostream>Queue::Queue(){ currentSize = 0; front = 0; end = 0;}Queue::~Queue(){}int Queue::empty(){ if(0 == currentSize) return 1; return 0;}int Queue::dequeue(){ if(empty())//队列为空时 return -1; q[front] = 0; front++; currentSize--; if(front == MAX_SIZE) front = 0; return 0;}int Queue::enqueue(DataType val){ if(full()) return -1; q[end] = val; end++; currentSize++; if(end == MAX_SIZE) end = 0; return 0;}int Queue::full(){ if(currentSize == MAX_SIZE) return 1; return 0;}DataType Queue::queue_front(){ return q[front];}DataType Queue::queue_end(){ return q[end-1];}void Queue::print(){ std::cout<<"the elements of the queue is :"<<std::endl; for(int i = front; i != end; i++) { if(i == MAX_SIZE) i = 0; std::cout<<q[i]<<" "; } std::cout<<std::endl;}
阅读全文
0 0
- C++ 双向队列链式实现和队列的顺序实现
- 队列的顺序实现和链式实现
- 队列 -- 顺序队列和链式队列类的实现
- C语言实现链式队列和顺序队列
- c/c++实现顺序循环队列和链式队列
- C链式队列的实现
- 队列的顺序存储实现和链式存储实现
- C实现链式队列
- C链式队列实现
- 队列的实现:链式队列
- java队列实现(顺序队列、链式队列、循环队列)
- java队列实现(顺序队列、链式队列、循环队列)
- 队列的实现:循环队列和链式队列
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现
- 链式队列的实现。
- 链式队列的实现
- HYSBZ bzoj 1941 Hide and Seek
- ANSI Common Lisp译本笔记6
- java实现发送邮件
- 盒子模型之美容热点产品
- 搭建https
- C++ 双向队列链式实现和队列的顺序实现
- ubunt学习1
- 以C语言的方式理解IIC总线
- Django REST FrameWork中文教程3:基于类的视图
- 高级分析技术再先进,商业智能bi分析系统仍不可替代
- linux内核中断处理
- Redis介绍
- Fedora 新/老版本 官方文档地址 (26开始新,25以前老)
- git 命令学习