코드 사본은 다음과 같습니다.
import java.util.arrays;
/**
*스택 구현 <br>
* @author skip
* @version 1.0
*/
공개 클래스 스택 <t> {
개인 int 크기; /스택의 요소 수;
개인 객체 [] arr; // 기본 배열
개인 최종 int defaultLength = 200; // 기본 길이
/**
* 매개 변수 구성이없고 기본 길이로 배열을 초기화하십시오
*/
공개 스택 () {
arr = 새 개체 [defaultLength];
크기 = 0;
}
/**
* 길이 매개 변수로 배열을 초기화합니다
* @param 길이
*/
퍼블릭 스택 (int 길이) {
arr = 새 개체 [길이];
크기 = 0;
}
/**
* 스택을 입력하십시오
* @param 요소 데이터
*/
공개 무효 푸시 (t 요소) {
// 용량을 확장해야합니다
if (size> = arr.length) {
// 배열 확장
ExtendCapacity (size+1);
}
ARR [size ++] = 요소;
}
/**
* 스택에서
* @return 데이터
*/
@suppresswarnings ( "확인되지 않은")
public t pop () {
// 요소 수는 0이고 스태킹 작업을 수행 할 수 없습니다.
if (size == 0) {
널 리턴;
}
t t = (t) arr [size-1];
arr [-size] = null; // 데이터가 릴리스되어 null로 복원되었습니다.
반환 t;
}
/**
* 스택을 지 웁니다
*/
public void clear () {
for (int i = 0; i <size; i ++) {
arr [i] = null;
}
크기 = 0;
}
/**
* 현재 스택에서 요소 수를 얻으십시오.
* @return 요소 수
*/
public int getsize () {
반환 크기;
}
/**
* 빈 스택 여부를 결정하십시오
* @return empty는 사실이며, 비어 있지 않은 것은 거짓입니다
*/
공개 부울 isempty () {
반환 크기 == 0;
}
/**
* 인쇄 스택의 모든 요소
*/
@suppresswarnings ( "확인되지 않은")
public void printstack () {
for (int i = 0; i <size; i ++) {
System.out.print (((T) ARR [i]). TOSTRING ());
}
System.out.println ();
}
/**
* 용량 확장
* @param 길이 필요한 길이
*/
개인 void extendCapacity (int length) {
// 현재 배열 길이와 필요한 길이는 최대 값이어야합니다.
int mincapacity = math.max (arr.length, length);
// 용량 확장이 필요한지 판단합니다
if (mincapacity -Arr.length> 0) {
// 배열 길이는 절반으로 증가합니다
int newlength = arr.length + arr.length/2;
// 새 길이가 요구 사항보다 작은 경우 필요한 길이를 배열 길이로 사용하십시오.
if (newlength <mincapacity) {
Newlength = mincapacity;
}
// 배열 길이는 정수를 초과 할 수 없습니다 .max_value
if (newlength> integer.max_value -8) {
newlength = integer.max_value;
}
// 배열 확장
arr = arrays.copyof (arr, newlength);
}
}
}