您的位置:首页 > 编程语言 > C语言/C++

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++ 队列