用模板做的队列

来源:互联网 发布:青云志进阶数据 编辑:程序博客网 时间:2024/04/30 15:43

//练兵--希望各位评论
const int size=100;

template <class Type>
class Queue
{
 int front;
 int back;
 Type a[size];
public:
 Queue();
 void EnQueue(Type );
 Type DeQueue();
 bool IsEmpty();
 bool IsFull();
 void Print();
 void Exit(const char *)const;
};

template <class Type>
inline Queue<Type>::Queue()
{
 front=back=0;
}

template <class Type>
void Queue<Type>::EnQueue(Type Data)
{
 if(IsFull())
 {
  Exit("满");
 }
 a[back]=Data;
 back=(back+1)%size;
}

template <class Type>
Type Queue<Type>::DeQueue()
{
 if(IsEmpty())
 {
  Exit("空");
 }
 Type t=a[front];
 front=(front+1)%size;
 return t;
}

template <class Type>
bool Queue<Type>::IsFull()
{
 if((back+1)%size==front)
  return true;
 return false;
}

template <class Type>
bool Queue<Type>::IsEmpty()
{
 if((front+size)%size==back)
  return true;
 return false;
}

template <class Type>
void Queue<Type>::Print()
{
 int temp=front;
 while(!IsEmpty())
 {
  cout<<a[front++]<<"-";
 }
 front=temp;
}

template <class Type>
void Queue<Type>::Exit(const char *err)const
{
 printf("%s",err);
 //exit(0);
}

int main(array<System::String ^> ^args)
{
 Queue<int> intQueue;
 intQueue.EnQueue(5);
 intQueue.Print();
 intQueue.DeQueue();
 printf("/n");
 Queue<float> floatQueue;
 floatQueue.EnQueue(1.2);
 floatQueue.EnQueue(1.3);
 floatQueue.EnQueue(1.4);
 floatQueue.Print();
 printf("/n");
 getchar();
    return 0;

原创粉丝点击