//单链表实现队列
#include<new>
#include<iostream>
template <typename T> struct Node{
T data;
Node * next;
};
template <typename T> class Queue
{
public:
typedef Node<T> * PtrToQueue;
private:
PtrToQueue first;
PtrToQueue last;
public:
bool IsEmpty()
{
return first->next == NULL;
}
void MakeEmpty()
{
if( !IsEmpty() )
while( !IsEmpty() )
Dequeue();
}
void Enqueue( T x )
{
PtrToQueue tmp;
tmp = new Node<T>;
tmp->data = x;
tmp->next = NULL;
last->next = tmp;
last = tmp;
}
T Front()
{
return first->next->data;
}
void Dequeue()
{
PtrToQueue tmp;
tmp = first;
first = first->next;
delete tmp;
}
T FrontAndDequeue()
{
T d = Front();
Dequeue();
return d;
}
int length()
{
int i;
Node<T> * p = first;
for(i=0;p!=last;i++,p=p->next);
return i;
}
Queue( )
{
first = new Node<T>;
first->data = 0;
first->next = NULL;
last = first;
}
~Queue()
{
MakeEmpty();
delete first;
}
};
单链表实现队列
最新推荐文章于 2024-08-09 23:44:06 发布