Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 저장소와 동적메모리
- image sensor
- Zoom Lense
- 렌즈
- 심도
- 아이리스
- 무게선별자동화
- 조건 제어문
- Digital Slow Shutter
- 실생활알고리즘
- 변수의 초기화와 대입
- Patch Cleaner
- 이미지센서
- CS Mount
- Pixel Bit Format
- Depth of Fileld
- AppInventer
- camera
- 고정비트레이트
- Gain
- c언어
- ASCCII
- 프로그래머스 lv2
- 과초점거리
- 변수
- 카메라
- 간단한 앱만들어보기
- C Mount
- main 함수 인자 전달
- 저조도
Archives
- Today
- Total
카메라 개발자 공부방(SW)
스택(Stack) 본문
반응형
오늘은 stack에 대해 공부해보겠습니다. stack은 나중에 들어온 데이터가 먼저 나오는 Last In First Out 구조입니다.
STL에선 deque로 stack을 대신할 수 있기 때문에 따로 stack이란 라이브러리를 제공하진 않습니다.
Stack의 대표적인 함수 interface는 다음과 같습니다.
push: 입력된 데이터가 맨 뒤에 추가로 입력이 됩니다.
pop: 맨뒤의 데어터가 삭제됩니다.
top: 맨 나중에 입력된 데이터를 반환합니다.
empty: 데이터가 비워졌는지를 확인하여 true or false를 반환합니다.
full: 데이터가 메모리에 가득 찾는지를 확인하여 true or false를 반환합니다.
다음은 코드를 작성해보겠습니다
#include <iostream>
using namespace std;
template <typename T>
class stack
{
private:
#define MAX_SIZE 8
T dataArray[MAX_SIZE];
int _top;
public:
stack() : _top(0)
{
memset(dataArray, 0, sizeof(dataArray));
}
~stack() {}
void push(T data)
{
if (full())
{
printf("stack is full\n");
return;
}
dataArray[_top] = data;
_top++;
}
void pop()
{
if (empty())
{
printf("stack is empty\n");
return;
}
_top--;
}
T top()
{
return dataArray[_top - 1];
}
bool full()
{
return _top >= MAX_SIZE;
}
bool empty()
{
return _top < 0;
}
void print()
{
for (int k = 0; k < _top; k++)
printf("%d ", dataArray[k]);
printf("\n");
}
};
int main()
{
stack<int> st;
st.push(1);
st.print();
st.push(2);
st.print();
st.push(3);
st.print();
cout << "top: " << st.top() << endl;
st.push(4);
st.print();
st.push(5);
st.print();
st.pop();
st.print();
st.pop();
st.print();
return 0;
}
stack이 가득 찾는지 비었는지 확인하려면 _top 인덱스가 메모리의 크기와 비교하면 알 수 있습니다.
'자료구조&알고리즘' 카테고리의 다른 글
레드블랙트리 (0) | 2022.01.09 |
---|---|
이진 탐색 트리(Binary Search Tree) (0) | 2021.12.26 |
무게 선별작업 자동화 프로그램 (0) | 2021.12.10 |
큐(queue) (0) | 2021.11.28 |
덱(Deque) (0) | 2021.11.27 |
Comments