Tiyana
پنج شنبه 22 آبان 1393, 19:13 عصر
سلام به همه ، من دارم یه صف اولویت مینویسم که با آرایه نامرتب کار میکنه برای این صف یه کلاس دیگه برای عناصرش به اسم element نوشتم که اولویت و دیتا توی اون قرار میگیره و آرایه صف رو آرایه ای از شی های کلاس element در نظر گرفتم و اونو با pointer تعریف کردم اما موقع استفاده وقتی میخوام از (<-) برای دسترسی به مقدار های شی آرایه داشته باشم اصلا شی رو نمیشناسه بنظرتون مشکل از کجا میتونه باشه؟
template <class T> class Queue;
template <class T>
class Element
{
friend class Queue<T>;
private:
T data;
int priority;
};
template <class T>
class Queue
{
public:
Queue(int );
~Queue();
bool IsEmpty();
bool IsFull();
bool Add(const T &,int);
bool Delete(T &);
int getElementCount();
private:
Element<T>* Elements;
bool* ElementStates;
int firstElementEmpty;
int dataCounter;
int Size;
};
template <class T>
Queue<T> :: Queue(int SizeQueue)
{
Size=SizeQueue;
dataCounter=0;
ElementStates=new bool[SizeQueue];
Elements=new Element<T>[SizeQueue];
for(int i=0;i<SizeQueue;i++)
{
ElementStates[i]=false;
}
}
template<class T>
bool Queue<T> ::Add(const T &value,int pr)
{
if(IsFull())
return false;
else
{
int addPosition;
for(int i=0;i<Size;i++)
{
if(ElementStates[i]==false)
{
addPosition=i;
ElementStates[i]=true;
break;
}
}
Elements[addPosition]->data=value;
Elements[addPosition]->priority=pr;
dataCounter++;
return true;
}
}
template <class T> class Queue;
template <class T>
class Element
{
friend class Queue<T>;
private:
T data;
int priority;
};
template <class T>
class Queue
{
public:
Queue(int );
~Queue();
bool IsEmpty();
bool IsFull();
bool Add(const T &,int);
bool Delete(T &);
int getElementCount();
private:
Element<T>* Elements;
bool* ElementStates;
int firstElementEmpty;
int dataCounter;
int Size;
};
template <class T>
Queue<T> :: Queue(int SizeQueue)
{
Size=SizeQueue;
dataCounter=0;
ElementStates=new bool[SizeQueue];
Elements=new Element<T>[SizeQueue];
for(int i=0;i<SizeQueue;i++)
{
ElementStates[i]=false;
}
}
template<class T>
bool Queue<T> ::Add(const T &value,int pr)
{
if(IsFull())
return false;
else
{
int addPosition;
for(int i=0;i<Size;i++)
{
if(ElementStates[i]==false)
{
addPosition=i;
ElementStates[i]=true;
break;
}
}
Elements[addPosition]->data=value;
Elements[addPosition]->priority=pr;
dataCounter++;
return true;
}
}