스 택 의 순서 저장 구조 - 더 블 스 택

스 택 의 순서 저장 구조 - 더 블 스 택.
 
두 창고 의 그림:
 
BothStack.h
const int StackSize=100;  //100      ,         
template 
class BothStack 
{
public:
    BothStack( ) {top1= -1;  top2=StackSize;}  //    ,         
    ~BothStack( ) { }      //    
    void Push(int i, T x);   //   x   i
    T Pop(int i);          //  i      
    T GetTop(int i);       //  i     
    bool Empty(int i);     //   i     
private:
    T data[StackSize];     //        
    int top1, top2;        //        ,                  
};

#endif

 
 
BothStack.cpp
//BothStack.cpp
#include "BothStack.h"

/*
 *     :    
 *       : 
 *       :     
 *       : 
 *     :      
 */

template 
BothStack::BothStack( )
{
	top1= -1;  
	top2=StackSize;
} 

/*
 *     :       
 *       : 
 *       :           
 *       : 
 *     :            
 */

template 
BothStack::~BothStack( ) 
{

}

/* 
 *     :       
 *       :  i,   x
 *       :  i       x
 *       :      ,       
 *     :     ,  i          
 */

template  
void BothStack::Push(int i, T x )
{
    if (top1==top2-1) 
		throw "  ";
    if (i==1) 
		data[++top1]=x;
    if (i==2) 
		data[--top2]=x;
}

/*
 *     :       
 *       :  i
 *       :  i       
 *       :      ,       
 *     :     ,  i        
 */

template 
T BothStack::Pop(int i)
{
    if (i==1) //  1       
	{   
        if (top1== -1) 
			throw "  ";
        return data[top1--];
	}
    if (i==2)  //  2       
	{                           
        if (top2==StackSize) 
			throw "  ";
        return data[top2++]; 
	}
}

/*
 *     :       
 *       :  i
 *       :   i       
 *       :  i  ,   i        
 *     :     
 */

template  
T BothStack::GetTop(int i)
{
    if(i==1)
	{
        if (top1!=-1) 
			return data[top1];
	}
    if(i==2)
	{
	    if(top2!=StackSize)
			return data[top2];
   } 
}

/*
 *     :       
 *       :  i
 *       :   i     
 *       :  i   ,  1;    0
 *     :     
 */

template  
bool BothStack::Empty(int i)
{  
    if(i==1)
	{
	    if(top1==-1) 
			return 0;
	    else 
			return 1;
	}
    if(i==2)
	{
	    if(top2==StackSize)
			return 0;
	    else 
			return 1;
	}
}

좋은 웹페이지 즐겨찾기