자바 코드로 창고 데이터 구조를 실현하는 기본 방법 귀납
창고의 한 단락에 요소를 추가하고 삭제하며, 창고에서 창고 꼭대기를 가리키는 결점과 count 변수가 창고의 크기를 표시합니다.
private LinearNode top;//창고 꼭대기를 가리키다
private int count;//창고 크기 표시
매번 창고를 나가고 창고를 눌러 체인 시계의 표두에 놓는다: (다시 표미할 수도 있고, 실현 방식은 다를 뿐이다)
top----> 요소 1---> 요소 2---> 요소 3...
구현(테스트 main 포함):
LinkedStack
package Stack;
import Bag.LinearNode;
// , ,
public class LinkedStack implements StackADT {
private LinearNode top; //
private int count;//
public static void main(String[] args){
LinkedStack stack = new LinkedStack();
System.out.println(" 0 10 ");
for(int i = 0;i < 10;i++)
stack.push(i);
System.out.println(" 5 ");
for(int i = 0;i < 5;i++)
stack.pop();
System.out.println(" ?: " + stack.isEmpty());
System.out.println(" : " + stack.size());
System.out.println(" : " + stack.top.getElement());
System.out.println(" : " + stack.peek());
}
public LinkedStack()
{
top = null;
count = 0;
}
public int size() {
return count;
}
public boolean isEmpty() {
return (size() == 0);
}
public void push(Object element) {
LinearNode node = new LinearNode(element);
node.setNext(top);
top = node;
count++;
}
public Object pop() {
if(isEmpty())
{
System.out.println("stack is empty!");
System.exit(1);
}
Object result = top.getElement();
top = top.getNext();
count--;
return result;
}
public Object peek() {
Object result = top.getElement();
return result;
}
}
실행 결과:0부터 10까지 순차적으로 창고를 압수하다
연속 5 회 아웃바운드 작업 수행
창고가 비어 있습니까?false
창고 크기: 5
스택 상단 요소: 4
스택 상단 요소: 4
배열 구현:
창고 밑바닥은 항상 수조 아래에 0이 표시되는 위치입니다. 창고에 들어가는 것은 수조 아래에 표시되는 마지막 요소부터 시작합니다.
private Object[] contents;
private int top;//top , , count !!!
구현(테스트 main 포함):ArrayStack
package Stack;
public class ArrayStack implements StackADT {
private Object[] contents;
private int top;//top , , count !!!
private static int SIZE = 10;
public ArrayStack()
{
contents = new Object[SIZE];
top = 0;
}
public void expand(){// ,
Object[] larger = new Object[size()*2];
for(int index = 0;index < top;index++)
larger[index] = contents[index];
contents = larger;
}
public int size() {
return top;
}
public boolean isEmpty() {
return (size() == 0);
}
public void push(Object element) {
//if(isEmpty())
//expand();
if(top == contents.length)
expand();
contents[top] = element;
top++;
}
public Object pop() {
if(isEmpty())
{
System.out.println("stack is empty!");
System.exit(1);
}
Object result = contents[top-1];
contents[top-1] = null;//
top--;
return result;
/* :::
* top--;
* Object result = contents[top];
* contents[top] = null;*/
}
public Object peek() {
Object result;
if(isEmpty())
result = null;
else
result = contents[top-1];
return result;
}
public static void main(String[] args) {
ArrayStack stack = new ArrayStack();
System.out.println(" 0 24 , 10 ");
for(int i = 0;i < 25;i++)
stack.push(i);
for(int i = 0;i < 10;i++)
stack.pop();
System.out.println(" : " + stack.size());
System.out.println(" ?: " + stack.isEmpty());
System.out.println(" : " + stack.peek());
}
}
실행 결과:0부터 24까지 순서대로 창고를 눌러 10회 연속 창고를 나가다
창고 크기: 15
창고가 비어 있습니까?false
스택 상단 요소: 14
컬렉션 LinkedList를 사용하여 스택 시뮬레이션
방법
java의 범주형은 LinkedList로 하여금 각종 데이터 형식의 창고를 아날로그적으로 저장할 수 있게 한다. int, double, String, Object 등을 포함하여 몇 가지 사용되는 API 인터페이스를 소개한다.
창고에 들어가다
void addFirst(E e); //
스택 요소 가져오기
E getFirst(); //
창고에서 나가다
E removeFirst(); //
창고를 비우다
boolean isEmpty(); //
예제 코드
import java.util.LinkedList;
import java.util.NoSuchElementException;
public class SimulateStack {
private LinkedList<Integer> stack = new LinkedList<Integer>();
public boolean isEmpty() {
return this.stack.isEmpty();
}
public void push(int data) {
this.stack.addFirst(data);
}
public int pop() throws NoSuchElementException{
return this.stack.removeFirst();
}
public int getTop() throws NoSuchElementException{
return this.stack.getFirst();
}
public static void main(String args[]) {
SimulateStack s = new SimulateStack();
s.push(1);
s.push(2);
s.push(3);
while (! s.isEmpty()) {
int data = s.getTop();
System.out.println(data);
s.pop();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.