判断两个stack 是否相等

stack 中存储了两种类,一种是trigger 类,一个是argument 对象,下面的程序就是判断两个stack 是否相同


 /**
     * 判断两个stack 是否相同
     */
	public boolean IsSameStack(Stack stack1,Stack stack2)
	{ 		
	    boolean boole = false;
	    
		Stack st1 = new Stack();
		
		Stack st2 = new Stack();
		
		if(stack1.isEmpty()||stack2.isEmpty())
		{
		    boole = false;
		    
		}else if((stack1.size() == stack2.size())== false)
		{	 						
		    boole = false;
		    
		}else
		{	 		
		    int j =0;
		    
		    for(int i =1; i < ((stack1.size()) + j + 1); i++)
		    {
		    	
	 			if((stack1.peek() instanceof Trigger) && (stack2.peek() instanceof Trigger))
	 			{ 			   
	 				Trigger tr1 = (Trigger)stack1.pop();
	 				
	 				Trigger tr2 = (Trigger)stack2.pop();
	 				
	 				st1.push(tr1);
	 				
	 				st2.push(tr2);
	 				
	 				boole = IsSameTrigger(tr1,tr2);
	 				
	 				if(boole == false)
	 				{
	 					break;
	 				}
	 				
	 				j++;
	 				
	 			}else if((stack1.peek() instanceof Argument) && (stack2.peek() instanceof Argument))
	 			{	 				
	 				Argument arg1 = (Argument)stack1.pop();
	 				
	 				Argument arg2 = (Argument)stack2.pop();
	 				
	 				st1.push(arg1);
	 				
	 				st2.push(arg2);
	 				
	 				boole = IsSameArgu(arg1,arg2);
	 				
	 				if(boole == false)
	 				{
	 					break;
	 				}
	 				
	 				j++;
	 				
	 			}else
	 			{
	 				break;
	 			}
	 		}
	 	}
 		
 		int n = 0;
 		
 		for(int m = 1; m < (st1.size()+ 1 + n); m++)
 		{
 			stack1.push(st1.pop());
 			
 			stack2.push(st2.pop());
 			
 			n++;
 		}
 		
 		return boole;
 	}		

/**
     * 比较两个trigger实例是否相同
     */
 	public boolean IsSameTrigger(Trigger t1,Trigger t2)
 	{
 		boolean b = false;
 		
 		if((t1.getTriggerId() == t2.getTriggerId()) && (t1.getTriggerWord() == t2.getTriggerWord()) && (t1.getTriggerType() == t2.getTriggerType()))
 		{
 			b = true;
 			
 		}else
 		{
 			b = false;
 		}	
 		
 		return b;
 	}


/**
 	 * 比较两个论元实例是否相同
 	 */
 	public boolean IsSameArgu(Argument arg1,Argument arg2)
 	{
 		boolean bo = false;
 		
 		if((arg1.getArguId() == arg2.getArguId())&&(arg1.getProtein() == arg2.getProtein())&&(arg1.getArguType() == arg2.getArguType()))
 		{
 			bo = true;
 			
 		}else
 		{
 			bo = false;
 		}
 		
 		return bo;		
 	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值