#include<iostream>
#include<cstring>
#include<cstdlib>
#include"Header.h"
using namespace std;
template<typename type>
class Node
{
public:
Node *next;
type element;
Node(const type& it,Node *nextValue)
{
element=it;
next=nextValue;
}
Node(Node *nextValue)
{
next=nextValue;
}
Node(){}
~Node(){}
};
template<typename type>
class Lqueue:public Queue<type>
{
private:
Node<type>* front;
Node<type>* rear;
int nodeNum;
public:
Lqueue()
{
front=rear=new Node<type>();
nodeNum=0;
}
~Lqueue()
{
clear();
delete front;
}
void clear()
{
while(front->next!=NULL)
{
rear=front;
front=front->next;
delete rear;
}
rear=front;
nodeNum=0;
}
bool isEmpty()
{
if(front->next==NULL)
cout<<"The queue is empty."<<endl;
return 0;
}
bool isFull()
{
Node<type>* temp=new Node<type>(NULL);
if(temp==NULL)
{
cout<<"The queue is full."<<endl;
return true;
}
return false;
}
void enqueue(type& a)
{
rear->next = new Node<type>(a,NULL);
rear=rear->next;
nodeNum++;
}
type dequeue()
{
type temp;
temp=front->next->element;
Node<type>* pointer=front->next;
front->next=pointer->next;
if(rear==pointer)
{
rear=front;
}
delete pointer;
nodeNum--;
return temp;
}
const type& frontValue()
{
return front->next->element;
}
int length()
{
return nodeNum;
}
};
int main()
{
Lqueue<int> a;
for(int i=0;i<5;i++)
{
int value;
cin>>value;
a.enqueue(value);
}
cout<<endl;
a.dequeue();
cout<<a.frontValue()<<endl;
return 0;
}
C++ 用链表实现队列(queue)
最新推荐文章于 2024-04-28 18:45:04 发布