C++链队列类实现

来源:互联网 发布:软件外包服务专业 编辑:程序博客网 时间:2024/06/05 16:28
#include <iostream>using namespace std;typedef int DataType;#define MAXSIZE 100struct 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;}

0 0