C++链队列类实现
2016-02-03 18:30
483 查看
#include <iostream> using namespace std; typedef int DataType; #define MAXSIZE 100 struct DataNode{ DataType data; DataNode *pNextNode; DataNode(DataType data2); }; DataNode::DataNode(DataType data2) { data=data2; } class MyQueue { public: MyQueue(); ~MyQueue(); bool clearQueue(); bool IsQueueEmpty(); int GetQueueLength(); bool GetQueueHead(DataType &data); bool DeleteQueueHead(DataType &data); bool InsertQueueEnd(DataType data); private: DataNode *QueueHead; DataNode *QueueEnd; int QueueLength; }; int MyQueue::GetQueueLength() { return QueueLength; } bool MyQueue::clearQueue() { while(QueueHead!=QueueEnd) { DataNode *p=NULL; p=QueueHead->pNextNode; QueueHead->pNextNode=p->pNextNode; if(p==QueueEnd)QueueHead=QueueEnd; delete p; } QueueLength=0; return true; } bool MyQueue::IsQueueEmpty() { if(QueueHead==QueueEnd) return true; else { return false; } } bool MyQueue::DeleteQueueHead(DataType &data) { if(QueueHead==QueueEnd) return false; DataNode *p=NULL; p=QueueHead->pNextNode; data=p->data; QueueHead->pNextNode=p->pNextNode; if(p==QueueEnd)QueueEnd=QueueHead; delete p; --QueueLength; return true; } bool MyQueue::GetQueueHead(DataType &data) { if(QueueHead==QueueEnd) return false; data=QueueHead->pNextNode->data; --QueueLength; return true; } bool MyQueue::InsertQueueEnd(DataType data) { DataNode *node=new DataNode(data);//应该判断new出错怎么办,但是一般new不会出错 node->pNextNode=NULL; QueueEnd->pNextNode=node; QueueEnd=node; ++QueueLength; return true; } MyQueue::MyQueue() { QueueHead=new DataNode(0); QueueHead->pNextNode=NULL; QueueEnd=QueueHead; QueueLength=0; } MyQueue::~MyQueue() { } void main() { MyQueue test; for(int i=0;i<10;++i) { test.InsertQueueEnd(i); } cout<<test.IsQueueEmpty()<<"空不空"<<test.GetQueueLength()<<endl; /*test.clearQueue(); cout<<test.IsQueueEmpty()<<"空不空"<<test.GetQueueLength()<<endl;*/ DataType num; for(int i=0;i<10;++i) { test.DeleteQueueHead(num); cout<<num<<endl; } cout<<test.IsQueueEmpty()<<" "<<test.GetQueueLength()<<endl; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C#线程队列用法实例分析
- C++联合体转换成C#结构的实现方法
- 算法系列15天速成 第九天 队列
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例