📄 mystack.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 + -