728x90
20220819(금)
- 목차
- CSS, flex 복습
- Stack
- Queue
< 복습 >
< Stack - 후입선출 LIFO(Last In First Out) >
- stack : 차곡차곡 쌓아 올린 형태의 자료구조
- push : stack에 data를 넣는 연산
- pop : stack에서 data를 빼는 연산
- Stack-Full 인 경우, SP(Stack Pointer) 값은? 마지막에 머물러있다. ➡ 더이상 못넣어,,push 미실행
< Stack 구조 짜보기 >
<script>
const max = 5; // 데이터 개수의 최대치
const stack = []; // 스택 자료구조
let SP = 0; // Stack Pointer
let count = 0;
// null을 리턴한경우 stack full;
const push = function(data)
{
if (count === max)
{
return false;
}
stack[SP] = data;
count++;
SP++;
return true;
}
// state === EMPTY, null
const pop = function()
{
if (count === 0)
{
return null;
}
SP--;
count--;
return stack[SP];
}
const printStack = function()
{
let a = [];
for (let i = 0; i < count; i++)
{
a.push(stack[i]);
}
console.log(a.join());
}
console.log(push({a:1}));
console.log(push(22));
console.log(push(33));
console.log(push(44));
console.log(push(55));
console.log(push(66));
console.log(pop());
console.log(pop());
console.log(pop());
console.log(pop());
console.log(pop());
console.log(pop());
</script>
< Queue - 선입선출 FIFO(First In First Out) >
queue : 줄을 서서 기다리는 것 : 먼저 온 사람이 먼저다!
< Queue 구조 짜보기 >
<script>
// queue 데이터 구조.
const queue = [];
// 최대 데이터 개수.
const max = 5;
// 몇개 데이터가 있는가?
let count = 0;
// rear : push-pointer
let rear = 0;
// front : pop-pointer
let front = 0;
const enqueue = function(data)
{
if (count === max)
return false;
// queue에다 데이터를 넣어준다.
rear = rear % max;
queue[rear] = data;
count++;
rear++;
return true;
}
const dequeue = function()
{
let result;
if (count === 0)
return false;
front = front % max;
result = queue[front];
count--;
front++;
return result;
}
enqueue(11);
enqueue(22);
enqueue(33);
console.log(dequeue());
console.log(dequeue());
enqueue(44);
enqueue(55);
enqueue(66);
enqueue(77);
console.log(dequeue());
console.log(dequeue());
console.log(dequeue());
console.log(dequeue());
console.log(dequeue());
</script>
728x90
'🏫 Open API_JAVA' 카테고리의 다른 글
[25일차] Opacity로 Animation 효과 (0) | 2022.08.24 |
---|---|
[23~24일차] position / 개인 프로젝트 진행 (0) | 2022.08.23 |
[21일차] 개인 프로젝트 기획안 피드백 / 가이드 코딩 (0) | 2022.08.18 |
[19~20일차] DOM / 프로젝트 기획안 (0) | 2022.08.17 |
[18일차] 알고리즘 / 버블 정렬 (0) | 2022.08.17 |