[정상 설치] [창고] 출고 순서 문제 총화

창고
우리 모 두 는 낯 설 지 않 은 데이터 구조 로 먼저 나 왔 다.
창고 에 대해 많은 조작 이 있 습 니 다:
1. 스 택 을 쌓 고 2. 스 택 을 나 가 고 3. 스 택 꼭대기 요 소 를 가 져 옵 니 다. 4. 스 택 이 비어 있 는 지 판단 합 니 다. 5. 스 택 이 꽉 찼 는 지 판단 합 니 다.
이 가능 하 다, ~ 할 수 있다,...
이 문 제 는 모두 가 먼저 생각 한 것 은 틀림없이 귀속 이다.
본 고 는 또한 이 방법 을 채택 하여 창고 에서 나 올 수 있 는 모든 가능 한 출력 을 실현 한다.
우선 코드 를 살 펴 보 겠 습 니 다.
4. 567913. 여기 서 우 리 는 자바 의 깊 은 복사 본 을 사 용 했 는데 그것 이 바로 clone (클론) 이다.C + + 안에 있어 요.
깊 은 복사 와 얕 은 복사, 그들의 차이 점: 깊 은 복사, 내용 이 복사 되 었 고 주소 도 변화 가 생 겨 서로 영향 을 주지 않 습 니 다.그러나 얕 은 복사 에 대해 서 는 주로 같은 메모리 공간 을 가리 키 는데 한 내용 이 바 뀌 면 다른 것 도 달라 집 니 다!자바 에 서 는 클 라 이언 트 방식 으로 이 루어 집 니 다.
딥 카피!
2. 스 택 순서 가 합 법 적 인지 판단
스 택 에 들 어 가 는 순서 와 스 택 을 나 가 는 순 서 를 정 하여 이 스 택 순서 가 합 법 적 인지 판단 합 니 다.
코드 부터 보 겠 습 니 다.
package qyq.Algorithm.StackPop;

import java.util.Stack;
/**
 *         ,         
 * @author qi
 * @creation 2012-8-14
 */
public class StackPop {

	public static void orderStack(Stack<String> stack,String result,String input){
		@SuppressWarnings("unchecked")
		Stack<String> temp=(Stack<String>)stack.clone();
		String subStr=input.substring(0,1);
		input =input.substring(1);
		temp.push(subStr);
		if(input.length()==0){
			while(!temp.isEmpty()){
				result+=temp.pop();
			}
			System.err.println(result);
		}else {
			orderStack(temp, result, input);
			while(!temp.isEmpty()){
				result+=temp.pop();
				orderStack(temp, result, input);
			}
		}
	}
	
	public static void main(String args[]){
		String s="1234";
		Stack<String> stack =new Stack<String>();
		orderStack(stack, "", s);
	}
}

위의 두 while 순환 이 관건 이 며, 각각 다른 상황 을 처리 합 니 다.생각해 보 세 요!헤헤

좋은 웹페이지 즐겨찾기