?? link.h
字號:
#ifndef LINK_H
#define LINK_H
#include "para.h"
template <class T> class link
{
public:
link();
link(T* val, link<T>* pt);
void addTail(T* val);
void addPri(T* val);
T* sechGenMes();
T* getVal();
link<T>* getPt();
void setPt(link<T>* pt);
void showLink();
private:
T* value;
link<T>* ptNxt;
};
template<class T> link<T>::link():ptNxt(NULL){}
template<class T> link<T> :: link(T* val, link<T>* pt):value(val),ptNxt(pt){}
template<class T> T* link<T>::getVal(){return value;}
template<class T> link<T>* link<T>::getPt(){return ptNxt;}
template<class T> void link<T>::setPt(link<T>* pt){ptNxt=pt;}
template<class T> void link<T>::addTail(T* val)
{
if(ptNxt==NULL)
{
ptNxt=new link<T>(val,ptNxt);
}
else
{
ptNxt->addTail(val);
}
}
template<class T> void link<T>::addPri(T* val)
{
if(ptNxt==NULL)
ptNxt=new link<T>(val,ptNxt);
else
{
if(val->getTim()<ptNxt->value->getTim())
ptNxt=new link<T>(val,ptNxt);
else
ptNxt->addPri(val);
}
}
template<class T> T* link<T>::sechGenMes()
{
//cout<<"searching...";
if(value->getType()==GEN)
return value;
if(ptNxt==NULL)
return NULL;
return ptNxt->sechGenMes();
}
template<class T> void link<T>::showLink()
{
cout<<"Type: "<<value->getType()<<" Tim: "<<value->getTim()<<endl;
if(ptNxt==NULL)
return;
ptNxt->showLink();
}
//////////////////////////////////////////////////
template <class T> class list
{
public:
list();
void addTail(T* val);
void addPri(T* val);
T* viewHead();
T* getHead();
T* sechGenMes();
int getLen();
void showList();
private:
link<T>* ptFirst;
int len;
friend class link<T>;
};
template<class T> list<T>::list():ptFirst(NULL),len(0){}
template<class T> void list<T>::addTail(T* val)
{
if(ptFirst==NULL)
{
ptFirst=new link<T>(val,ptFirst);
}
else
{
ptFirst->addTail(val);
}
len++;
}
template<class T> void list<T>::addPri(T* val)
{
if(ptFirst==NULL)
ptFirst=new link<T>(val,ptFirst);
else
{
if(val->getTim()<ptFirst->getVal()->getTim())
ptFirst=new link<T>(val,ptFirst);
else
ptFirst->addPri(val);
}
len++;
}
template<class T> T* list<T>::getHead()
{
if(ptFirst==NULL)
return NULL;
link<T>* tem=ptFirst;
ptFirst=ptFirst->getPt();
len--;
tem->setPt(NULL);
return tem->getVal();
}
template<class T> int list<T>::getLen()
{
return len;
}
template<class T> T* list<T>::viewHead()
{
if(len==0)
return NULL;
return ptFirst->getVal();
}
template<class T> T* list<T>::sechGenMes()
{
if(len==0)
return NULL;
assert(ptFirst);
return ptFirst->sechGenMes();
}
template<class T> void list<T>::showList()
{
if(ptFirst==NULL)
return;
ptFirst->showLink();
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -