?? 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 + -