#include <iostream>
using namespace std;
template <class Type>
class QueueItem
...{
public:
QueueItem(const Type&);
const Type& getData();
QueueItem* getNext();
void setNext(QueueItem*);
private:
const Type &data;
QueueItem *next;
};
template <class Type>
QueueItem<Type>::QueueItem(const Type &a):data(a)
...{
next = NULL;
}
template <class Type>
const Type& QueueItem<Type>::getData()
...{
return data;
}
template <class Type>
QueueItem<Type>* QueueItem<Type>::getNext()
...{
return next;
}
template <class Type>
void QueueItem<Type>::setNext(QueueItem<Type> *a)
...{
next = a;
}


template <class Type>
class Queue
...{
public:
Queue();
bool isEmpty();
const Type& remove();
void add(const Type&);
private:
QueueItem<Type> *front;
QueueItem<Type> *end;
};


template <class Type>
Queue<Type>::Queue()
...{
front = NULL;
end = NULL;
}
template <class Type>
bool Queue<Type>::isEmpty()
...{
return ( front == end && front == NULL );
}
template <class Type>
const Type& Queue<Type>::remove()
...{
const Type &temp = front->getData();
QueueItem<Type> *qu=front;
front = front->getNext();
if(front == NULL)
...{
end = NULL;
}
delete qu;
return temp;
}
template <class Type>
void Queue<Type>::add(const Type &data)
...{
QueueItem<Type> *qu=new QueueItem<Type>(data);
if( front == end && front == NULL )
...{
front = qu;
end = qu;
}
else
...{
end->setNext(qu);
end = qu;
}
}

int main()
...{
cout<<"hehe ,you are"<<endl;
Queue<int> qu;
qu.add(30);
qu.add(60);
qu.add(90);
qu.add(190);
qu.add(290);
qu.add(390);
qu.add(30);
qu.add(60);
qu.add(90);
qu.add(190);
qu.add(290);
qu.add(390);
while(!qu.isEmpty())
...{
cout<<qu.remove()<<",";
}
cout<<endl;
return 1;
}
本文介绍了一个使用C++模板实现的通用队列数据结构。该队列可以存储任意类型的元素,并提供了基本的操作如添加元素(add)、移除元素(remove)及判断队列是否为空(isEmpty)等。通过模板实现,使得队列能够灵活地应用于不同类型的数据。
1180

被折叠的 条评论
为什么被折叠?



