放飞梦想

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
代码
#include<iostream.h>
template
<class T>
class SeqQueue
{
private:
T
*element;
int size;
int front,rear;
public:
SeqQueue(
int size=64);
~SeqQueue();
bool IsEmpty();
void EnQueue(T x);
T dequeue();
T length();
};
template
<class T>
SeqQueue
<T>::SeqQueue(int size)
{
this->size=size<64?64:size;
element
=new T[this->size];
front
=rear=0;
}
template
<class T>
SeqQueue
<T>::~SeqQueue()
{
delete []element;
}
template
<class T>
bool SeqQueue<T>::IsEmpty()
{
return front==rear;
}
template
<class T>
void SeqQueue<T>::EnQueue(T x)
{
if(front==(rear+1)%size)
{
T
*temp=element;
element
=new T[size*2];
int i=front,j=0;
while(i!=rear)
{
element[j]
=temp[i];
i
=(i+1)%size;
j
++;
}
front
=0;
rear
=j;
size
*=2;
}
element[rear]
=x;
rear
=(rear+1)%size;
}
template
<class T>
T SeqQueue
<T>::dequeue()
{
if(!IsEmpty())
{
T x
=element[front];
front
=(front+1)%size;
return x;
}
throw "空队列!";
}
template
<class T>
T SeqQueue
<T>::length()
{
if(!IsEmpty())
{
T x
=rear-front;
return x;
}
throw "空队列!";
}
int main()
{
SeqQueue
<int> Q;
int x,y,n,i,len;
cout
<<"请输入队列长度:"<<endl;
cin
>>n;
cout
<<"请输入各元素的值:"<<endl;
for(i=0;i<n;i++)
{
cin
>>x;
Q.EnQueue(x);
}
len
=Q.length();
cout
<<"当前有效元素的个数是"<<len<<endl;
cout
<<"对头元素是:"<<endl;
y
=Q.dequeue();
cout
<<y;
return 0;

}

 

posted on 2010-06-25 14:30  rockysy  阅读(165)  评论(0)    收藏  举报