Javascript에서 스택 구현 및 작업
스택은 후입선출(LIFO) 원칙에 따라 작동하는 선형 데이터 구조입니다. 선형 데이터 구조이기 때문에 스택의 최상위 구성원을 가리키는 하나의 포인터인 top만 있습니다. 새 요소가 스택에 추가되면 맨 위에 배치되며 해당 요소는 스택에서만 제거할 수 있습니다.
스택으로 작업할 때 염두에 두어야 할 몇 가지 사항은 다음과 같습니다.
책 더미와 같은 실제 스택처럼 동작하기 때문에 스택이라고 합니다.
스택은 미리 정의된 용량을 갖는 추상 데이터 유형입니다. 즉, 특정 크기의 구성 요소만 저장할 수 있습니다.
특정 순서로 요소를 삽입하고 삭제하는 데이터 구조로, 후입선출(LIFO) 또는 선입선출(FIFO)이 될 수 있습니다.
스택 작업
LIFO 패턴은 스택에서 사용됩니다. 아래 그림과 같이 스택에는 5개의 메모리 블록이 있습니다. 따라서 스택의 크기는 5입니다.
현재 비어 있는 스택에 요소를 저장한다고 가정합니다. 아래에 설명된 대로 크기 5 스택을 선택하고 스택이 채워질 때까지 구성 요소를 하나씩 밀어 넣습니다.
스택이 가득 차 있기 때문에 스택의 크기는 5입니다. 위의 상황에서 스택에 새 요소를 입력하면 위에서 아래로 이동하는 것을 볼 수 있습니다. 아래에서 위로 스택이 채워집니다.
스택의 구현
스택은 모든 프로그래밍 언어로 구현할 수 있지만 이 기사의 초점은 JavaScript를 사용하여 스택 및 스택 작업을 구현하는 것입니다. 스택은 배열 또는 연결 목록을 사용하여 구현할 수 있습니다. 이 기사에서는 배열을 사용하여 스택을 구현합니다. 다음은 스택에서 수행할 수 있는 기본 작업입니다.
푸시 - 스택에 요소를 추가합니다.
팝 - 스택에서 요소를 제거합니다.
Peek - 제거하지 않고 스택의 최상위 데이터 요소를 가져옵니다.
위에서 언급한 작업으로 스택 인스턴스화
배열로 스택을 초기화하기 위해 JavaScript 클래스를 사용할 것입니다.
class Stack {
constructor() {
this.storage = [];
this.top = -1;
}
}
위의 코드 블록은 스택 생성을 처리합니다. constructor() 메서드는 해당 클래스의 개체 인스턴스를 만드는 클래스 메서드입니다.
다음으로 push 메서드를 사용하여 스택에 요소를 추가해야 합니다. 이것은 아래의 코드 블록을 사용하여 수행됩니다.
푸시
push(data) {
this.top++;
this.storage[this.top] = data;
}
위의 푸시 메서드는 데이터로 표시된 인수를 수락하고 데이터 요소를 스택에 추가합니다.
팝
pop() {
if(this.top === -1) {
return null;
} else {
let data = this.storage[this.top];
this.top--;
return data;
}
}
pop 메서드는 인수를 허용하지 않습니다. 이 메소드가 호출되면 스택 맨 위에 있는 요소를 제거합니다. 스택이 비어 있으면 null을 반환합니다.
몰래 엿보다
peek() {
return this.storage[this.top] = data || null;
}
pop 메서드와 같은 peek 메서드는 인수를 허용하지 않습니다. 단순히 스택 맨 위에 있는 요소를 반환합니다. 스택이 비어 있으면 null을 반환합니다.
class Stack {
constructor() {
this.storage = []
this.top = -1
}
push(data) {
this.top++;
this.storage[this.top] = data;
}
pop() {
if(this.top === -1) {
return null;
} else {
let data = this.storage[this.top];
this.top--;
return data;
}
}
peek() {
return this.storage[this.top] = data || null;
}
}
위의 코드 스니펫은 작업이 클래스의 메서드인 전체 스택 클래스를 보여줍니다.
스택 클래스의 사용
// initialize the class
const stack = new Stack()
// add elements to the stack
stack.push(3)
stack.push(4)
stack.push(5)
stack.push(6)
console.log(stack) // returns [3, 4, 5, 6];
//remove an element from the stack
stack.pop()
console.log(stack) // returns [3,4,5];
// get the element at the top of the stack
console.log(stack.peek()) // returns 5;
결론
우리는 JavaScript 클래스와 배열을 사용하여 스택과 일부 작업을 성공적으로 구현했습니다. 우리가 다룬 스택 작업은 푸시 작업, 팝 작업 및 피크 작업입니다. 그게 다야. 기사에 대한 생각과 의견을 공유하십시오. 다음 글에서 뵙겠습니다.
Reference
이 문제에 관하여(Javascript에서 스택 구현 및 작업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/d2ndjim/stack-implementation-and-operations-in-javascript-2om8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)