스택(Stack)
: 데이터 입출력은 오로지 스택의 꼭대기에서만 이뤄짐
가장 마지막에 들어간 데이터가 제일 먼저 나오고(Last In - First Out),
가장 먼저 들어간 데이터는 가장 나중에 나옴(First In - Last Out)
C언어에서 변수를 선언한 후에 수명 주기가 끝나면 변수를 자동으로 제거하는 자동 메모리도 스택으로 구현
배열로 스택을 구현하면
동적으로 스택의 용량을 조절할 수 없으나 구현하기에는 간단하다는 장점이 있음
꼭 가지고 있어야 하는 세가지 필드
용량
최상위 노드의 위치
노드 배열
링크드 리스트로 스택을 구현하면
스택의 용량에 제한을 두지 않아도 되는 장점이 있음
링크드 리스트 스택은 배열 기반의 스택과는 달리 '스택의 용량'이나 '최상위 노드의 인덱스'가 없고
링크드 리스트의 헤드와 테일에 대한 포인터 필요
꼭 가지고 있어야 하는 필드
링크드 리스트의 헤드
링크드 리스트의 테일
링크드 리스트의 테일(=최상위 노드)에 대한 정보를 가지고 있어야 함
ㄴ 테일의 정보가 없어도 주소를 알아낼 수 있으나, 순차탐색을 통해 정보를 얻어야 하므로 성능상 손해가 발생
꼭 가지고 있어야 하는 세가지 필드
링크드 리스트로 스택을 구현하면 스택의 용량에 제한을 두지 않아도 되는 장점이 있음
링크드 리스트 스택은 배열 기반의 스택과는 달리 '스택의 용량'이나 '최상위 노드의 인덱스'가 없고 링크드 리스트의 헤드와 테일에 대한 포인터 필요
꼭 가지고 있어야 하는 필드
링크드 리스트의 테일(=최상위 노드)에 대한 정보를 가지고 있어야 함 ㄴ 테일의 정보가 없어도 주소를 알아낼 수 있으나, 순차탐색을 통해 정보를 얻어야 하므로 성능상 손해가 발생