반응형
안녕하세요 기공준입니다.
이번 글에서는 스택에 대해서 간단하게 알아보고
javascript를 이용해서 스택을 구현해보겠습니다.
스택은 목록의 끝에서만 접근할 수 있는 나열 구조입니다.
스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형구조(LIFO - Last In First Out)로 되어 있습니다.
자료를 밀어 넣는 것을 push라 하고 반대로 넣어둔 자료를 꺼내는 것을 pop이라고 합니다.
이때 꺼내지는 자료는 가장 최근에 push 한 자료부터 나오게 됩니다.
이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO(Last In First Out) 구조라고 합니다.
연산
top() : 스택의 가장 윗 데이터를 반환. 스택이 비었다면 연산 정의 불가
pop(): 스택의 가장 윗 데이터를 삭제한다. 스택이 비었다면 연산 정의 불가
push(): 스택의 가장 윗 데이터로 메모리 생성
empty(): 스택이 비었다면 1 반환, 그렇지 않다면 0 반환
위에 적은 개념을 바탕으로 javascript로 스택을 구현해보았습니다.
const stack = () =>{
let arr;
let top;
return {
_constructor : (size) => {
arr = new Array(size);
top = -1;
},
top : () => {
if(top<0) console.log('stack is empty');
return arr[top];
},
pop : () => {
if(top<0) console.log('stack downflow');
else {
delete arr[top];
top--;
}
},
push : (value) => {
if(top>=arr.length-1) console.log('stack overflow');
else {
top++;
arr[top]=value;
}
},
empty : () => {
for(let values in arr){
if(values){
return false;
}
}
return true;
},
printStack : () => {
console.log('===============\n');
for(let i=top;i>=0;i--){
console.log(`${arr[i]} \n`);
}
console.log('===============\n');
}
}
};
let stackOne = stack();
stackOne._constructor(5);
stackOne.push(1);
stackOne.push(5);
stackOne.pop();
console.log(stackOne.top());
console.log(stackOne.empty());
stackOne.push(3);
stackOne.printStack();
반응형
'it > javascript' 카테고리의 다른 글
삽입 정렬 알고리즘(insertion sort Algorithm) - javascript (0) | 2021.03.26 |
---|---|
선택 정렬 알고리즘(selection sort Algorithm) - javascript (0) | 2021.03.23 |
댓글