본문 바로가기
자료구조

[자료구조] 2장. 배열 스택(Stack) 구현

by 팔공산호랑이 2020. 4. 9.

-----------------------------------------------------

-----------------------------------------------------

 

-----------------------------------------------------

 

-----------------------------------------------------

우선 int 자료형을 stack이라는 이름으로

변경해서 이 자료가 스택 구조를 따른다는 것을 말해줍니다.

-----------------------------------------------------

그 다음

스택의 최상위 위치를 가리키는

Top 값을 5로 해줍니다.

길이가 5인 배열을 기준으로 잡았기 때문에

배열 끝 인덱스인 4 에 더하기 1에서

5로 잡아준 것입니다.

-----------------------------------------------------

Push함수의 프로토타입은

반환형태가 없고

매개변수로

스택에 넣을 데이터를 받는 매개변수

배열의 주소를 받는 매개변수

2개 입니다.

-----------------------------------------------------

Pop함수의 프로토타입은

반환형태가 없고

매개변수로

배열의 주소를 받는 매개변수

1개 입니다.

-----------------------------------------------------

-----------------------------------------------------

우선

스택구조로 저장될

길이가 5인 배열을 하나 만들어 줍니다.

아까 typdef 을 썼기 때문에

Int 대신 stack이라는 이름을 사용합니다.

-----------------------------------------------------

그 다음

데이터를 넣는 푸쉬 함수를

5번 실행해줍니다.

데이터는 반복문으로

10 30 50 70 90을 넣었습니다.

-----------------------------------------------------

그 다음

데이터를 빼는 팝 함수를

반복문 으로 5

실행했습니다.

-----------------------------------------------------

우선 데이터를 집어넣는

PUSH를 구현하는 법부터 살펴보겠습니다.

-----------------------------------------------------

-----------------------------------------------------

 

PUSH 동영상

-----------------------------------------------------

일단 내부 구조는

배열 스택이

꽉 차면 top0이 되므로

오류처리의 일종으로 top0이 되면

더 이상 데이터를 넣을수 없다는

캔트 푸쉬를 만들어 줍니다.

-----------------------------------------------------

그 다음

Top0이 아니라서

데이터를 넣을수 있으면

우선 데이터를 푸쉬 한다고 출력한다음

Top값을 1빼고

한칸 위로 올린다음

데이터를 넣어줍니다.

-----------------------------------------------------

-----------------------------------------------------

POP 동영상

-----------------------------------------------------

Pop 함수의 내부구조는

데이터가 다 비워진 상태는

더 이상 데이터를 뺄수 없습니다.

그 때의 top 값이 5이므로

Top5이면

더 이상 데이터를 뺄 수 없다는

캔트 팝을 출력해줍니다.

-----------------------------------------------------

그게 아니라서

뺄 수 있는 데이터가 있는 경우는

최상위 위치의 데이터를 출력해준다음

삭제해준다는 의미로 0을 넣고

Top을 증가시켜 밑으로 한칸 내리면 됩니다.

-----------------------------------------------------

실행결과

Push 10 30 50 70 90 하면

Pop 90 70 50 30 10이 나오게 됩니다.

데이터가 들어간 역순으로 빠져나오는

Last In First Out 형태인

LIFO 형태의 배열 스택이 만들어 졌습니다.

-----------------------------------------------------