본문 바로가기

알고리즘/C++

3. 스택 (Stack)

dyeoma.tistory.com/4

 

자료구조 개념, 종류

자료구조란? 일련의 자료들을 조직하고 구조화 하는 것 ex) 배열, 연결리스트, 트리, ... 성능 분석 공간 복잡도 - 필요한 공간의 크기 시간 복잡도 - 필요한 실행문의 실행 횟수 1. 배열 (Array)  인��

dyeoma.tistory.com

 

Stack class 선언

Private:
   T *stack;		// stack 원소 저장 배열
   int top;		// top 원소 위치
   int capacity;	// stack 배열 크기
Template <class T>
Stack<T>::Stack (int stackCapacity): capacity(stackCapacity){	// 생성자
   if(capacity < 1) throw "Stack Capacity must be > 0";
   stack = newe T[capacity];
   top = -1;
}

초기 top = -1

empty 상태 top = -1

full 상태 top = capacity-1

 

 

Stack 삽입 - O(1) 소요

template <class T>
void Stack<T>::Push(const T& x){
   if(top == capacity-1){		// 배열 크기 2배 확장
      ChangeSizeID(stack, capacity, 2*capacity);
      capacity *=2;
   }
   stack[++top]=x;
}

 

 

Stack 삭제 - O(1) 소요

template <class T>
T* Stack<T>::Pop(T& x){
   if(top==-1)		// empty stack
      return 0;		// null 반환
   x = stack[top--];	// x = 삭제되는 값
   return &x;		// x 주소 반환
}

'알고리즘 > C++' 카테고리의 다른 글

5. 연결 리스트 (Linked List)  (0) 2020.07.21
4. 큐 (Queue)  (0) 2020.07.21
Container Class와 Template  (0) 2020.07.13
2. 배열 (Array)  (0) 2020.07.13
1. 기본 개념  (0) 2020.07.12