스택 데이터 구조
일상 생활에서 우리는 예를 들어 책 더미 또는 상자 더미 등과 같은 스택 데이터 구조를 접했습니다.
따라서 스택 데이터 구조는 이것의 요소가 다른 요소 위에 표시되는 방식으로 구조화되며 이것이 스택이라는 이름이 붙은 이유입니다.
It follows
LIFO
pattern which means Last In First Out. So the element which is added at the last, at the removal time it's removed first and so on.
아래 이미지에서 스택 데이터 구조가 어떻게 보이는지 시각화할 수 있습니다.
구현하기 전에 스택 데이터 구조의 몇 가지 용어를 이해합시다.
Push() :- Push means pushing element in a stack.
Pop() :- Pop means removing element from stack.
Top :- Top points to the top-most element in the stack and as we push or pop elements from stack we increment or decrement top pointer.
Peak() :- Peak means the first value which is top value of the stack.
Java에서 배열을 사용하여 스택을 구현하는 방법을 살펴보겠습니다. 원하는 프로그래밍 언어를 사용할 수 있습니다.
먼저 클래스를 만들고 세 가지 속성을 만들고 이러한 속성에 대한 정보를 코드에서 확인합니다.
class StackExample {
private int[] arr; // used to store our stack elements
private int top; // used to know which element is at the top
private int capacity; // total size of stack
public StackExample(int size) {
arr = new int[size];
top = -1; // will initialize with -1 as initially it is not pointing to any element
capacity = size;
}
}
그래서 이것은 아래 이미지와 같이 보일 것입니다 :-
따라서 처음에 top은
not pointing to any element
이고 요소를 스택에 밀어넣으면 increment the top
맨 위 또는 마지막으로 밀어넣은 요소를 가리킵니다.푸시 작업 코드 :-
그래서 여기에서는 배열을 사용하여 스택을 구현하고
it can overflow
전체 조건을 확인해야 하므로 스택이 가득 찼는지 여부를 확인합니다.public void push(int value) {
if(isFull()) {
System.out.println("Stack is full");
} else {
arr[++top] = value;
}
}
public boolean isFull() {
return top == capacity - 1;
}
스택에 몇 가지 값을 추가하면 아래 이미지와 같이 표시됩니다.
여기서 상단은 값 50을 가리키고 있습니다.
팝 연산을 위한 코드를 보자 :-
유사하게 푸시 작업에서 오버플로 조건을 확인했으므로 pop() 메서드에서 작업을 수행합니다
check underflow
. 그래서 우리는 빈 스택에 접근하려고 시도하지 않을 것입니다.public void pop() {
if(isEmpty()) {
System.out.println("Stack is empty");
} else {
System.out.println("Removing value: "+arr[top--]);
}
}
public boolean isEmpty() {
return top == -1;
}
pop 메서드를 호출하면 스택에서 50을 제거하고
top will be decremented
는 이제 40을 가리킬 것입니다.피크 및 표시 방법 코드 :-
public void peakValue() {
System.out.println("Peak value is: "+arr[top]);
}
public void display() {
if(isEmpty()) {
System.out.println("Stack is empty");
} else {
System.out.println("Stack values are: ");
for(int i=top; i >= 0; i--) {
System.out.println(arr[i]);
}
}
}
그리고 여기서 우리의 드라이버 방법, 가장 중요한 코드는 아무것도 작동하지 않습니다!
public static void main(String[] args) {
StackExample s1 = new StackExample(5);
s1.push(10);
s1.push(20);
s1.push(30);
s1.push(40);
s1.pop();
s1.display();
s1.peakValue();
}
배열을 사용하여 스택을 구현하는 것이 얼마나 쉬운지 확인하십시오.
배열을 사용하여 스택을 구현하는 데에는 몇 가지 장점과 단점이 있지만 이 게시물에서는 다루지 않습니다.
Reference
이 문제에 관하여(스택 데이터 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/deepak_maurya/stack-data-structure-4np4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)