[자료구조] 기본 개념 익히기 1 - 스택(STACK)

2016. 6. 3. 20:00자료구조&알고리즘

안녕하세요. 오늘도 새롭고 신나는 일이 생기는 하루입니다.


물론 때로는 안되고 안풀리는 일들도 있더라도, 

희망을 가지고 포기하지 않는다면 분명 새롭고 신나고 좋은 일들이 있을 것을 믿습니다. 

그리고 응원합니다.


이번 시간에는 컴퓨터의 자료 구조에 대해 알아보는 시간을 갖도록 하겠습니다.



다람쥐의 스택 이야기


다람쥐는 겨울에 사용할 식량창고를 만들었습니다. 그리고 식량창고에 겨울에 먹을 식량을 하나씩 쌓아 놓았어요. 겨울이 되자 다람쥐는 식량창고에 있는 음식을 하나씩 먹기 시작했습니다.

 

다람쥐의 식량창고는 아래와 같은 구조로 되어 있답니다.

번호는 다람쥐가 구한 도토리 번호이름입니다. 번호는 제가 마음대로 붙여 보았습니다.




(wiki 백과 참조)


다람쥐들은 서로 식량창고에 음식을 넣을 , 그리고 음식을  이렇게 말하기로 약속했습니다.

 

음식을 넣을 때는 ‘Push’ – 푸쉬

음식을 때는 ‘Pop’ –

 

일할 때면 다람쥐들이 푸쉬, 팝하는 소리를 상상해 보세요.^^


그리고 도둑을 방지하기 위해 식량창고에 대해 암호를 사용하기로 했답니다.

 

항상 들어갈 때는 지키고 있는 사람에게 이 단어를 이야기 해야 합니다.


'LIFO(Last In First Out)' 가장 나중에 넣었던 식량은 가장 먼저 먹을 있다.

 

지금도 이를 사용하여 다람쥐들은 겨울을 보내고 있답니다.


[스택에 대해 알아보기 1]

Stack(스택) 뭐예요? 그리고 어디에 사용되나요?

 

Stack 이란 영어 중의 하나는 다른 어떤 것의 위에 하나를 올리는 것의 그룹 의미합니다.

 

그리고 들어본 친구들을 위해 간단하게 설명해 볼께요.

컴퓨터에서 데이터를 다루는 여러가지 방식이 있어요. 이를 다른 말로 하면 자료구조라고 합니다.

 

스택이란 중의 하나의 종류입니다. 컴퓨터의 데이터를 처리하는 방식의 하나입니다.

 

그러면 스택이라는 자료구조는 어디에 사용됩니까?

 

컴퓨터에서 프로그래밍에서 함수내의 지역변수 사용을 예로 들어 있어요.

 

컴퓨터에서 프로그래밍을 하다보면 함수라는 것을 사용합니다

함수를 사용할 , 어떤 값을 전달하기 위해 변수를 사용합니다.

 

예를 들면

a 함수 f 호출합니다변수 a,b 값을 전달하죠.

함수 f에서는 a, b 값을 복사해서 a1, b1값을 만들고,

함수 g a1, b1 값을 사용해서 변수 a2, b2값을 만듭니다.

 

이제 함수 g 실행한 이후에 끝나게 되면 자동적으로

지역변수인 a2, b2 메모리에서 없어지게 됩니다.

그리고 함수 f 실행이 마치고 안의 지역변수 a1, b1 없어지게 됩니다.

 

마지막으로 main 함수도 실행이 끝나고 지역변수 a, b 없어지게 됩니다.

 

변수가 생성될 때는 a -> a1 -> a2 순서로 생성되고

변수가 소멸될 때는 a2 -> a1 -> a 순서로 소멸됩니다.

 

변수 b, b1, b2 동일한 구조입니다.

자세히 보면 가장 먼저 생성된 친구가 가장 나중에 없어지게 되는 구조이네요. 이를 스택 구조라고 말합니다.


[스택에 대해 알아보기 2]

데이터 넣고(Push) 데이터 없애기(Pop)

 

데이터를 넣는 것을 ‘Push’라고 합니다.

기존의 데이터에서 데이터를 꺼내는 것을 ‘Pop’이라고 합니다.

 

아래 그림은 순서대로 1 있는 상태에서 2,3,4,5,6 데이터를 넣었고 Push(푸쉬)했고,

이후 6,5,4,3,2 순서대로 Pop() 데이터를 꺼냈습니다.



(Wiki 백과 참조)


그러면 앞에서 배웠던 내용을 다시 정리해 보고 이번 강좌를 마치도록 하겠습니다.

 

Stack(스택) 뭐예요? 그리고 어디에 사용되나요?

스택이란 하나의 데이터를 처리하는 방식. 이를 자료 구조라고 한다.

먼저 넣은 데이터는 제일 나중에 사용하게 되고, 나중에 넣었던 데이터가 가장 먼저 사용하게 된다.

간단한 예로 컴퓨터에서 함수 호출 시에 변수를 메모리에 넣고 지우는 작업이 스택 구조를 사용하고 있다.

 

데이터 넣고(Push) 데이터 없애기(Pop)

스택 구조에서 데이터를 넣는 것을 Push라고 한다.

스택 구조에서 데이터를 빼는 것을 Pop이라고 한다.

 

이 글을 보는 모든 분에게 새롭고 신나는 일이 생기는 하루 하루가 되기를 기대합니다.


오늘 하루도 수고하셨습니다~

 

하나님이 세상을 이처럼 사랑하사 독생자를 주셨으니 이는 그를 믿는 자마다 멸망하지 않고 영생을 얻게 하려 하심이라(3:16)