▷ 스택(Stack)
- 스택은 데이터 입/출력이 한쪽으로만 접근할 수 있는 자료구조이다.
- 가장 나중에 들어간 데이터가 제일 먼저나오게 되는 구조이다.
- 선형구조 라고도 한다.
데이터의 입력이 A=> B=> C=> D 순서인 구조에서 자료를 꺼내거나 삭제하려면 다음과 같은 동작이 필요하다.
제공되는 스택을 쓸 경우.
push : 데이터를 추가한다.
top : 최상위 데이터를 반환한다.
pop : 최상위 데이터를 삭제한다.
isEmpty : 현재 스택이 Null인지 아닌지 확인 후 true/false을 반환한다.
직접 구현할 경우 보통 사용법.
push : 데이터를 추가한다.
Peek : 최상위 데이터를 반환한다.
pop : 최상위 데이터를 반환 후 데이터를 삭제 or 데이터를 삭제한다. ( 구현자 입맛대로. )
isEmpty : 현재 스택이 Null인지 아닌지 확인 후 true/false을 반환한다.
라이브러리 사용 스택.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> using namespace std; #include <stack> // 스택을 사용하기 위한 include void main() { stack <int> s; // 스택을 int형으로 사용하겠음. // 1부터 10까지 데이터를 추가. for(int i = 0; i < 10; i++) s.push(i + 1); for(int i = 0; i < 10; i++) { printf("%d\n", s.top()); s.pop(); } } | cs |
직접 구현한 스택.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> using namespace std; #define MAX 9 typedef struct STACK{ int Data; struct STACK* pUnder; }STACK; STACK* pHead = NULL; void push(int Data); int peek(); void pop(); void main() { for(int i = 0; i < MAX; i++) push(i); for(int i = 0; i < MAX; i++) { printf("%d\n", peek()); pop(); } } void push(int Data) { STACK* NewNode = new STACK; NewNode->Data = Data; NewNode->pUnder = NULL; if(pHead != NULL) NewNode->pUnder = pHead; pHead = NewNode; } int peek() { if(pHead == NULL) { printf("데이터가 존재하지 않습니다. \n"); return -1; } return pHead->Data; } void pop() { if(pHead == NULL) { printf("데이터가 존재하지 않습니다. \n"); return; } STACK* pRemove = pHead; pHead = pHead->pUnder; delete pRemove; } |
결과
'자료구조' 카테고리의 다른 글
해시 테이블 (Hash Table) (0) | 2017.01.08 |
---|---|
큐(Queue) (0) | 2017.01.07 |
단방향 연결 리스트(Linked List) (0) | 2017.01.06 |
연결 리스트(Linked List) (0) | 2017.01.06 |
퀵 정렬 (Quick sort) (0) | 2017.01.04 |