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

📄 mystack.h

📁 一个基于H.wang的谓词演算公式的机器证明的vc实现
💻 H
字号:
template <class T> class mystack;
template <class T> class mystackNode {
friend class mystack<T>;
private: 
    T data;	                         //结点数据	
    mystackNode<T> *link;	       //结点链指针
    mystackNode ( T d = 0, mystackNode<T>*l = NULL ) : data ( d ), link ( l ) { }
};
template <class T> class mystack {
public:
    mystack ( ) : head ( NULL ) { }
    ~mystack ( );
    void push ( const T & item);
    void pop ( );
    T top ( );
    void MakeEmpty ( );         //实现与~mystack( )同
    int IsEmpty ( ) const{ return head == NULL; }
	bool IsOne(){return head!=NULL&&head->link==NULL;}
private:
    mystackNode<T> *head;       //栈顶指针
};
template <class T> mystack<T>::~mystack ( ) {
   MakeEmpty();
}

template <class T> void mystack<T>::push ( const T &item ) {
    head = new mystackNode<T> ( item, head );
    //新结点链入head之前, 并成为新栈顶
}
template <class T> void mystack<T>::pop ( ) {
	if( !IsEmpty ( ) ){			
    mystackNode<T> *p = head;
    T retvalue = p->data;     //暂存栈顶数据
    head = head->link;		      //修改栈顶指针
    delete p;     //释放,返回数据
	}
}

template <class T> T mystack<T>::top( ) {
	if( !IsEmpty ( ) )
		return head->data;
	return 0;
} 	
template <class T> void mystack<T>::MakeEmpty(){
	 mystackNode<T> *p;
     while ( head != NULL )      //逐结点回收
 	 { p = head;  head = head->link;  delete p; }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -