<--! [JAVA] 스택과 큐(Stacks and Queues) 알아보기(1) -->

[JAVA] 스택과 큐(Stacks and Queues) 알아보기(1)

필그램

·

2017. 7. 14. 06:54

우리가 변수상자나 함수상자를 만들어서 사용할때 외에, 리스트(List)나 셋(Set), 배열처(Array)럼 여러개의 데이터를 넣었다가 뺄경우 두가지 방식이 있습니다. 

이것을 데이터 객체(data objects)라고 하며, 두가지 방식으로 객체를 처리하고 있는데, 그것을 스택과 큐(Stacks and Queues) 라고 합니다.



스택은 순서대로 넣고, 마지막 넣은 것부터 뺍니다.  

스택은 쌓는 것을 말하는데, 자루에 쌓아 놓는것의 의미로 보면됩니다. 자루에 넣은것이나, 책을 쌓은 경우 아래 책을 빼면 무너지겠죠. 그래서 맨위에 나중에 쌓은것부터 빼야 안전합니다.


예를 들면, 브라우저의 창 이동(링크이동)과 비슷한 개념으로 보면 됩니다. 네이버 메인에서-> 클릭해서 뉴스 -> 주식창 으로 이동한 경우, Back(뒤로가기)버튼을 누르면 주식창 -> 뉴스 -> 네이버메인의 순서로 뒤부터 이동하는 것입니다.


반면, 큐(Queue)는 먼저 넣은 것을 빼내는 방식입니다. 영어로 Queue는 순서라고 볼수 있죠. 

아래 그림처럼 원형 관에 구슬을 넣고, 반대편에서 하나씩 빼는 것이라고 보면 됩니다.



관련된 이해를 위한 사진들은 아래와 같습니다.




stack.PUSH : 스택에 데이터 넣는것 (네비게이션 창에서 링크를 클릭하는 것과 같음)

stack.POP : 스택에서 데이터 빼내는것 (백(Back)버튼으로 이전 화면으로 이동 하는것과 같음)


스택을 안드로이드 스튜디오로 연습해 보면 다음과 같다.


public class MainActivity extends AppCompatActivity {

EditText mEditText;
Stack<Integer> stack = new Stack<Integer>();
int count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mEditText = (EditText) findViewById(R.id.editText);
}

public void onAddClicked (View v) {
stack.push(count); //스택에 추가
mEditText.setText("\n스택에 추가함 : " + count);
count ++;
mEditText.append("\n스택 : " + stack);
}

public void onGetClicked (View v) {
int outValue = stack.pop();
mEditText.setText("\n스택에서 가져옴 : " + outValue);

mEditText.append("\n스택 : " + stack);
}
}

화면 만들기(ActivityMain.xml)



테스트 결과화면은 다음과 같다.


큐에 대한 코드와 설명은 다음 블로그([JAVA] 스택과 큐(Stacks and Queues) 알아보기(2))에서 설명합니다.

반응형