//queue.h
#ifndef QUEUE_H_H
#define QUEUE_H_H
#include
using namespace std;
struct Node
{
int data;
Node * next;
};
class Queue
{
Node * front;
Node * rear;
int length;
public:
Queue();
~Queue();
void InitQueue();
void ClearQueue();
bool IsEmpty();
void EnQueue(int item);
void DeQueue();
int GetLength();
void PrintQueue();
};
#endif
//queue.cpp
#include "queue.h"
Queue::Queue()
{
front = new Node;
rear = new Node;
front->next = NULL;
rear = front;
length = 0;
}
Queue::~Queue()
{
Node * pTemp;
while(front->next != NULL)
{
pTemp = front;
front = front->next;
delete pTemp;
}
delete rear;
}
void Queue::InitQueue()
{
rear = front;
length = 0;
}
void Queue::ClearQueue()
{
Node * pTemp;
while(front->next != NULL)
{
pTemp = front->next;
front = pTemp->next;
delete pTemp;
}
rear = front;
length = 0;
}
bool Queue::IsEmpty()
{
return (length == 0);
}
void Queue::EnQueue(int item)
{
Node * pTemp = new Node;
pTemp->data = item;
pTemp->next = NULL;
rear->next = pTemp;
rear = pTemp;
length += 1;
}
void Queue::DeQueue()
{
if(front->next != rear)
{
Node * pTemp = front->next;
front->next = front->next->next;
delete pTemp;
length -= 1;
}
}
int Queue::GetLength()
{
return length;
}
void Queue::PrintQueue()
{
Node * pTemp = front->next;
while(front->next != rear)
{
cout<next->data<next = front->next->next;
}
front->next = pTemp;
cout<data<
int main(int argc, char * argv[])
{
Queue * queue = new Queue;
queue->InitQueue();
queue->EnQueue(1);
queue->EnQueue(2);
queue->EnQueue(3);
queue->EnQueue(4);
queue->EnQueue(5);
queue->PrintQueue();
if(queue->IsEmpty())
{
cout<<"empty."<
线性表-链表队列
最新推荐文章于 2024-07-11 10:18:37 发布