스 택 공유 공간

2627 단어 데이터 구조
1. 공유 창고 의 실현
package edu.tcu.soft;

/**
 *       
 */
public class MyBothStack {
	//       
	private Object[] object = new Object[5];
	//            
	private int top1, top2;

	//     
	public MyBothStack() {
		this.top1 = -1;
		this.top2 = object.length;
	}

	//     
	public void push(int i, E e) {
		//       
		if (top1 == top2 - 1) {
			object=increaseStack(object,top1,top2);
			System.out.println("   ");
		}else {
			//   i=1,   
			if (i == 1) {
				object[++top1] = e;
			}
			//   i=2,   
			if (i == 2) {
				object[--top2] = e;
			}
		}
	}
	//     
	@SuppressWarnings("unchecked")
	public E pop(int i) {
		//   i=1,          
		if (i == 1) {
			if(top1==-1){
				System.out.println("          ");
			}
			return (E) object[top1--];
		}
		//   i=2,          
		if (i == 2) {
			if(top2==object.length){
				System.out.println("          ");
			}
			return (E) object[top2++];
		}
		return null;
	}
	//       
	@SuppressWarnings("unchecked")
	public E peek(int i){
		if(i==1){
			return (E) object[top1];
		}
		if(i==2){
			return (E) object[top2];
		}
		return null;
	}
	
	//     ,             1 
	private Object[] increaseStack(Object[] object2, int top12, int top22) {
		// object          1 
		int oldLength=object2.length;
		int newLength=object.length;
		object=new Object[object2.length*2];
		for(int i=0;i<=top12;i++){
			object[i]=object2[i];
		}
		for(int j=newLength-1;j>newLength-(oldLength-top22);j--){
			object[j]=object2[--oldLength];
		}
		return object;
	}
	//      
	public int size(){
		return object.length;
	}
}

2. 테스트 클래스
package edu.tcu.soft;

public class Test {
   public static void main(String[] args) {
	MyBothStack stack=new MyBothStack();
	stack.push(1, 1);
	stack.push(1, 2);
	stack.push(1, 3);
	stack.push(2, 4);
	stack.push(2, 5);
	System.out.println(stack.peek(1)+"---");//    3
	stack.push(1, 4);
	System.out.println(stack.size()+"---      ");
}
}

코드 를 직접 써 야 스 택, 공유 스 택 의 실현 방식 이 많 지 않다 는 것 을 알 수 있 습 니 다.
공통점: 하나의 배열 과 스 택 포인터 로 스 택 요소 의 저장 과 팝 업 을 실현 합 니 다.     
차이 점: 순서 스 택 은 한 방향 으로 연장 되 고 공유 스 택 은 서로 연장 된다.
공유 스 택 의 장점: 한 프로그램 에서 같은 데이터 형식 과 두 스 택 을 동시에 사용 하면 가장 직접적인 방법 은 모든 스 택 에 하나의 배열 공간 을 열 어 주 는 것 이 라 고 생각 합 니 다. 그러나 이렇게 하면 한 스 택 의 공간 이 꽉 차 서 삽입 작업 을 할 수 없 을 수도 있 습 니 다. 또한 다른 스 택 의 공간 은 남아 서 이용 되 지 못 한 상황 이 발생 할 수 있 습 니 다.저장 공간의 낭 비 를 초래한다.공유 스 택 은 하나의 배열 을 이용 하여 두 개의 스 택 을 저장 하고 한 스 택 의 스 택 밑 을 이 배열 의 시작 부분 으로 하고 다른 스 택 의 스 택 지붕 은 이 배열 의 끝 이 며 모든 스 택 은 각자 의 점 에서 중간 으로 연장 합 니 다.

좋은 웹페이지 즐겨찾기