자바 스 택 의 두 가지 실현 방식
6154 단어 나의 오리지널데이터 구조&알고리즘
import java.util.Arrays;
/*
*
* :
* push pop peek isEmpty
* peek peek stack[size-1]
* pop peek()
* push size+1 stack[size++]
*
*/
public class Stack {
int size;//
private Object[] stack;
public Stack(){
stack=new Object[10];
}
public Boolean isEmpty(){
return size==0;
}
@SuppressWarnings("unchecked")
public E peek(){
if(isEmpty()){
return null;
}
return (E) stack[size-1];
}
public E push(E item){
stack[size++]=item;
return item;
}
public E pop(){
ensureCapacity(size+1);// +10
E e= peek();
stack[size-1]=null;
size--;
return e;
}
public void ensureCapacity(int size){
int len =stack.length;
if (len>size){
int newLen=10;
stack=Arrays.copyOf(stack,newLen);
}
}
public static void main(String[] args){
Stack s=new Stack<>();
s.push(56);
s.push(6785);
s.push(342);
System.out.println(s.size);
System.out.println(" "+s.pop());// 342
System.out.println(" "+s.pop());// 6785
}
}
다음은 링크 방식 으로 스 택 을 실현 합 니 다. 코드 는 다음 과 같 습 니 다.
/*
*
*/
class Node{
Nodenext=null;
E data;
public Node(E data){this.data=data;}
}
public class LinkedStack {
Nodetop=null; //
public boolean isEmpty(){
return top==null;
}
/*
* push new
*
*/
public void push(E data){
NodenewNode=new Node(data);
newNode.next=top;//
top=newNode; // top
}
/*
* pop next next
*/
public E pop(){
if(this.isEmpty()){
return null;
}
E data= top.data;
top=top.next;
return data;
}
public E peek(){
if(this.isEmpty()){
return null;
}
E data=top.data;
return data;
}//peek pop top pop top top
public static void main(String [] args){
LinkedStack stack=new LinkedStack<>();
stack.push(22);
stack.push(23);
stack.push(24);
stack.pop();
System.out.print(stack.peek());// : 23
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정렬. - 통 정렬.통 정렬 (Bucket Sort) 통 정렬 은 계수 정렬 의 업그레이드 버 전 입 니 다.그것 은 함수 의 매 핑 관 계 를 이용 하 였 으 며, 효율 여부 의 관건 은 바로 이 매 핑 함수 의 확정 에 있다.통 정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.