본문 바로가기

반응형

스택

<자료구조 알고리즘> 스택 구현 스택 구현 이번에는 스택을 구현해보자. 구현은 동적 배열을 이용해서도 구현을 할 수 있기는 하지만 중간에 있는 데이터에 접근하지는 않을 것이고 끝에 추가 삭제를 많이 할 테니 연결 리스트를 사용하는 것이 더 효율적일 것이다. 옆 그림과 같이 일반 연결 리스트를 이용해서 쉽게 구현할 수 있다. head가 가르키는 곳이 스택의 가장 윗부분이다. 데이터를 추가할 때는 새로운 노드의 다음 노드로 원래 head노드를 저장하고 head가 새로운 노드를 가르키게 하면 된다. 데이터를 꺼낼 때는 head가 가장 위 노드의 다음 노드를 가르키게 하면 된다. 코드로 구현해 보면 다음과 같다. template struct list { T val; list* next; list() : val(NULL), next(NULL) .. 더보기
<자료구조 알고리즘> 스택 스택이란? 배열처럼 선형 구조의 자료구조(뭔가 한 줄이라는 느낌)이며 한 쪽 끝에서만 제한적으로 접근할 수 있는 LIFO( last in first out) 구조의 자료구조이다. 이름 그대로 데이터를 쌓는 자료구조이다. 자 차근차근 알아보도록 하자. 1. 하노이 탑 스택을 알아보자면서 갑자기 웬 하노이 탑이 나오냐고? 일단 아래 사진처럼 하노이 탑의 기둥 하나만 떠올려 보자. 하노이탑은 기둥에 원판을 이동하는 퍼즐이다. (원판 크기는 스택이랑 관련 없으니 생각하지 말자) 이 기둥에 원판을 꽂는 것과 스택의 구조가 굉장히 비슷하다. 하노이탑에 원판을 꽂을 때에는 밑에서 꽂을 수도 없고 중간에 넣을 수도 없다. 무조건 위에 꽂아야 한다. 또한 빼낼 때에는 항상 맨 위에 있는 원판만 빼낼 수 있다. (위에 것.. 더보기

반응형