?? mylist.h
字號:
template<class T> class mylist;
class myset;
template<class T> class mylistNode{
friend class mylist<T>;
friend class myset;
private:
T data;
mylistNode<T> *link;
mylistNode(T d=0,mylistNode<T> *l=NULL):data(d),link(l){}
};
template<class T> class mylist{
friend class myset;
public:
mylist():first(NULL),last(NULL){}
~mylist();
void push(const T &item);
void MakeEmpty();
void SetFirst(){ current=first;}
void Next(){current=current->link;}
bool IsEnd(){ return current==NULL;};
T GetData(){ return current->data;}
mylistNode<T> *Getcurrent(){return current;}
void Deletecurrent();
void Delete(mylistNode<T> *p);
int IsEmpty()const{return first==NULL;}
bool Isin(const T &item);
private:
mylistNode<T> *first,*last,*current;
};
template<class T> mylist<T>::~mylist(){
MakeEmpty();
}
template<class T> void mylist<T>::push(const T& item){
if(first==NULL)first=last=new mylistNode<T>(item,NULL);
else last=last->link=new mylistNode<T>(item,NULL);
}
template<class T> void mylist<T>::MakeEmpty(){
mylistNode<T> *p;
while(first!=NULL){ p=first;first=first->link;delete p;}
first=last=NULL;
}
template<class T> void mylist<T>::Deletecurrent(){
mylistNode<T> *p,*q;
p=first;
while(p!=NULL&&p!=current){
q=p;
p=p->link;
}
q->link=p->link;
delete current;
current=q->link;
}
template<class T> bool mylist<T>::Isin(const T &item){
mylistNode<T> *p=first;
while(p!=NULL&&(p->data)!=item)p=p->link;
if(p!=NULL)return true;
return false;
}
template<class T> void mylist<T>::Delete(mylistNode<T> *p){
mylistNode<T> *p1,*p2;
p1=first;
if(p==first){first=first->link;delete p1;return;}
while(p1!=NULL&&p1!=p){
p2=p1;
p1=p1->link;
}
if(p1!=NULL){
p2->link=p1->link;
delete p1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -