[데이터 구조 와 알고리즘 01] 스 택
3878 단어 데이터 구조
정의: 데이터 저장 과 검색 을 위 한 선형 데이터 구조 만 접근 할 수 있 습 니 다.저장 방식 에 따라 순서 스 택 (배열 실현) 과 체인 스 택 (링크 실현) 으로 나 눌 수 있 습 니 다.
연산 제한: 후진 선 출.
기본 개념: 데이터 요소 가 없 는 스 택 을 빈 스 택 이 라 고 합 니 다.조작 데이터 의 한쪽 을 스 택 톱 이 라 고 합 니 다.
기본 연산:
1: 스 택 초기 화: 빈 스 택 을 만 듭 니 다.
2: 판 공.
3: 스 택 에 들 어가 기: 스 택 상단 지침 을 업데이트 하고 스 택 상단 데 이 터 를 추가 합 니 다.
4: 스 택 나 가기: 스 택 의 데 이 터 를 삭제 하고 스 택 의 포인터 업데이트.
5: 스 택 데이터 읽 기.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
순차 스 택 구현
public class SequenceStack implements Stack{
private Integer[] array ;
private int size ;
private int top = -1 ;//
public SequenceStack(int size){
this.size = size;
this.array = new Integer[size];
}
@Override
public boolean isEmpty() {
return (top==-1);
}
// ,
@Override
public boolean isFull() {
return (top==size-1);
}
//
@Override
public void push(int value) throws Exception{
if(isFull()) throw new ArrayIndexOutOfBoundsException(size);
array[++top] = value ;
}
// ,
@Override
public Integer pop(){
if(isEmpty()) return null;
int a= array[top];
array[top] = null;
top--;
return a ;
}
//
@Override
public Integer top(){
return isEmpty()?null:array[top];
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
for(Integer i : array){
stringBuilder.append(i+",");
}
return stringBuilder.toString()
.substring(0, stringBuilder.toString().length()-1);
}
}
체인 스 택 구현
public class LinkStack implements Stack {
private Link top;
@Override
public boolean isEmpty() {
return (top==null);
}
@Override
public boolean isFull() {
return false;
}
@Override
public void push(int value) throws Exception {
Link newLink = new Link();
newLink.data = value ;
newLink.next = top ;
top = newLink ;
}
@Override
public Integer pop() {
if(isEmpty()){
return null;
}
Integer data = top.data;
top = top.next;
return data;
}
@Override
public Integer top() {
return isEmpty()?null:top.data;
}
static class Link{
Integer data;
Link next ;
}
}
테스트 결과
public class Test {
public static void main(String[] args) throws Exception {
Stack sequenceStack = new SequenceStack(10);
sequenceStack.push(999);
System.out.println(sequenceStack);
Stack linkstack = new LinkStack();
System.out.println(linkstack.isEmpty());
System.out.println(linkstack.pop());
System.out.println(linkstack.top());
linkstack.push(1);
System.out.println(linkstack.pop());
System.out.println(linkstack.top());
}
}
999,null,null,null,null,null,null,null,null,null
true
null
null
1
null
일반적인 프로 그래 밍 응용 (java. util. Stack)
단어 역순 출력: 단 어 를 입력 하고 enter 후 알파벳 순서 가 뒤 바 뀐 단 어 를 표시 합 니 다.
public class StackForWordDesc {
@SuppressWarnings("resource")
public static void main(String[] args) {
while (true) {
//
System.out.println(" :");
Scanner scanner = new Scanner(System.in);
String read = scanner.nextLine();
Stack stack = new Stack<>();
//
for(int i=0;i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.