Engineering Note

Stack 본문

Computer Science/Data Structure & Algorithm

Stack

Software Engineer Kim 2021. 1. 6. 17:19

스택은 데이터를 일시적으로 저장하기 위해 사용하는 자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO, Last In First Out, FIFO,First In Last Out)입니다.

기본적으로 입력과 출력 이라는 함수 인터페이스로 동작합니다.

* 자료구조 코드 구현시 Tip

1.해당 자료구조 개념에 대한 이해

2.이해한 내용을 바탕으로 해당 자료구조에 어떤 데이터와 함수 인터페이스가 필요할지 생각

(위의 내용을 추상화라고 하고 이 추상화하는 것이 중요함)

3.기본적인 코드를 구현한 후에는 예외상황들에 대한 코드 최적화 작업을 진행

ex) 스택에서는 데이터를 넣고 뺄 메모리공간을 쉽게 만들수 있는 배열로 메모리공간을 생성하고 순서(데이터 위치상태)를 기억하기 위한

top변수가 필요함을 생각합니다. 그리고 데이터를 넣는 Push함수, Pop함수를 생성합니다.

그리고 코드 최적화 단계에서 어플리케이션 별로 스택이 필요 할 수 있으므로 위의 배열 메모리공간과 top변수를 위한 구조체를 생성하고 초기화 함수를 통해 해당 배열이 프로그램 동작시 공간을 할 당할 수 있는 동적배열 형태로 생성하도록 합니다.

스택의 활용

  • 부 프로그램 호출 시 복귀주소를 저장할 때
  • 함수 호출의 순서 제어
  • 인터럽트가 발생하여 복귀주소를 저장할 때
  • 후위 표기법(Postfix Notation)으로 표현된 수식을 연살할 때
  • 재귀(Recursive) 프로그램의 순서 제어
  • 컴파일러를 이용한 언어 번역 시

'Computer Science > Data Structure & Algorithm' 카테고리의 다른 글

Chapter 01 자료구조와 알고리즘의 이해  (0) 2021.01.07
이진탐색 알고리즘의 재귀적 구현(C언어)  (0) 2021.01.06
Recursion  (0) 2021.01.06
Queue  (0) 2021.01.06
자료구조 코드 구현 Tip  (0) 2021.01.06
Comments