Stack
in CS on Data Structure
Stack
Stack은 선형 자료구조의 일종으로 LIFO(Last in first out)이다.
python
python에서는 나는 list로 stack을 구현했다.
참고로 slice, pop, del을 모두 사용해서 pop을 구현할 수 있긴 하다.
- remove() : 지우고자 하는 인덱스가 아니라 값을 입력한다. 지우고자 하는 값이 2개 이상이 있으면 가장 앞에 있는 값을 지운다.
pop(), del : 리스트의 인덱스를 받아서 지운다. pop()은 지워진 인덱스의 값을 반환하지만 del은 반환하지 않는다. 이 때문에 del이 pop()보다 수행속도가 더 빠르다. remove()와 동일하게 pop()과 del은 특정 인덱스를 삭제하고 리스트를 재조정한다.
또한 del은 pop()과 다르게 리스트의 범위를 지정해서 삭제할 수 있다.
- slice : 슬라이싱은 원본 리스트의 값을 그대로 유지하면서 원하고자 하는 범위만큼 출력할 수 있다.
del<remove<pop<slice 순으로 실행할 때 시간이 소요된다. del이 가장 빠르다.
C++
stack의 기본 함수는 다음과 같다.
- 추가 및 삭제
- push(element) : top에 원소를 추가
- pop() : top에 있는 원소를 삭제
- 조회
- top() : top에 있는 원소를 반환
- 기타
- empty() : 스택이 비어있으면 true, 아니면 false를 반환
- size() : 스택 사이즈를 반환
#include <iostream>
#include <stack>
using namespace std;
int main() {
stack <int> s; // 스택 생성
s.push(1);
s.push(2);
s.push(3);
cout<<"top element: "<<s.top()<<'\n'; //3
s.pop(); //3 삭제
s.pop(); //2 삭제
cout<<"size : "<<s.size()<<'\n';
cout<<"empty: "<<(s.empty() ? "Y" : "N")<<"\n";
return 0;
}
Queue
Queue는 선형 자료구조의 일종으로 FIFO(First int first out)이다. Java Collection에서 queue는 인터페이스이다.
C++
queue의 기본 함수는 다음과 같다.
- 추가 및 삭제
- push(element) : 큐에 원소를 추가
- pop() : 큐에 있는 원소를 삭제(앞의 원소)
- 조회
- front() : 큐 제일 앞에 있는 원소를 반환
- back() : 큐 제일 뒤에 있는 원소를 반환
- 기타
- empty() : 큐가 비어있으면 true, 아니면 false를 반환
- size() : 큐 사이즈를 반환
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> q; //큐 생성
q.push(1);
q.push(2);
q.push(3);
q.pop();
q.pop();
cout<<"front : " <<q.front()<<'\n';
cout<<"back: " << q.back() << '\n';
cout<<"size: "<<q.size()<< '\n';
cout << "empty : " << (q.empty()? "Y" : "N") << '\n';
return 0;
}