스 택 공유 공간
2627 단어 데이터 구조
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()+"--- ");
}
}
코드 를 직접 써 야 스 택, 공유 스 택 의 실현 방식 이 많 지 않다 는 것 을 알 수 있 습 니 다.
공통점: 하나의 배열 과 스 택 포인터 로 스 택 요소 의 저장 과 팝 업 을 실현 합 니 다.
차이 점: 순서 스 택 은 한 방향 으로 연장 되 고 공유 스 택 은 서로 연장 된다.
공유 스 택 의 장점: 한 프로그램 에서 같은 데이터 형식 과 두 스 택 을 동시에 사용 하면 가장 직접적인 방법 은 모든 스 택 에 하나의 배열 공간 을 열 어 주 는 것 이 라 고 생각 합 니 다. 그러나 이렇게 하면 한 스 택 의 공간 이 꽉 차 서 삽입 작업 을 할 수 없 을 수도 있 습 니 다. 또한 다른 스 택 의 공간 은 남아 서 이용 되 지 못 한 상황 이 발생 할 수 있 습 니 다.저장 공간의 낭 비 를 초래한다.공유 스 택 은 하나의 배열 을 이용 하여 두 개의 스 택 을 저장 하고 한 스 택 의 스 택 밑 을 이 배열 의 시작 부분 으로 하고 다른 스 택 의 스 택 지붕 은 이 배열 의 끝 이 며 모든 스 택 은 각자 의 점 에서 중간 으로 연장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.