⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mylist.h

📁 一个基于H.wang的谓词演算公式的机器证明的vc实现
💻 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 + -