라벨이 queue인 게시물 표시

Linked List 구조 및 원리

이미지
 안녕하세요. 저번의 연장으로 이번에는 Linked List의 구조와 원리에 대해서 배우겠습니다.  커다란 창고에서 제가 바나나가 들어있는 상자를 찾고 있습니다. 이때 창고는 크게 4구역으로 나눠져 있습니다. A,B,C,D구역이고 저는 일단 A구역에 무슨 과일이 있는지 확인하기로 하고 A구역으로 갑니다.  이때 A구역에 아쉽게 바나나가 아닌 사과가 있습니다. 이때 이 사과를 head라고 합니다. 머리 부분이라는 것입니다.  또한 사과상자에 노란 포스트잇이 붙어있는데 이것은 다음 어느 구역으로 가야하는지 적혀져 있습니다. 이 노랑 포스트잇은 프로그래밍을 할때 다음 값으로 갈수 있도록 하는 주소역할을 합니다.  제가 이제 D구역으로 갔는데 망고박스 과일이 있고 포스트잇에는 B구역 이라고 적혀져 있습니다.  제가 B구역에 가도 바나나를 찾지 못하고 토마토와 C구역으로 가라는 포스트잇을 읽었습니다. 그래서 C구역으로 갔습니다.  이제야 C구역에서 바나나 박스를 찾았습니다. 그런데 포스트잇 에는 null이라고 적혀져 있습니다. 이는 마지막 구역이라는 뜻입니다. 그런 의미로 마지막을 tail이라고 부릅니다.  이 처럼 특정 데이터를 찾을때 데이터(과일) 옆의 주소(포스트잇)를 따라가는 것을 Linked List이라고 합니다. 순차적으로 찾을수 있지만 문제는 100개의 구역이 있으면 뛰어다니면서 찾아다니기가 어렵다는 것입니다. 이렇기 때문에 여러가지 자료구조 방법이 있습니다.  다음글 : Hash Table구조와 원리

Queue(큐) 구조 및 원리

이미지
 안녕하세요. 알렉스 입니다. 저번에 Stack에 대한 원리에 대해서 알아 봤는데 이번에는 Queue에 대해서 알아 보도록 하겠습니다.  예시는 Stack와 비슷합니다. Stack에 대해서 모르시는 분들은 먼저 Stack글을 읽어주시기 바랍니다. 링크는 아래쪽입니다. 링크 : Stack(쌓다)구조 및 원리  저번과 마찬가지로 과일상자를 넣을 것입니다. 다만 이번에는 자판기 안에 넣을 것입니다. 이 자판기는 한번 넣으면 돈을 넣어야지 뺄수 있습니다. 따라서 자판기가 과일박스별로 층층이 싸이지만 위에서 뺄수는 없습니다. 이제 사과박스를 자판기 안에 넣겠습니다. 이 과정을 Enqueue라고 합니다.  다음 바나나박스를 자판기 안에 넣겠습니다..  모든 과일 박스를 넣게 되면 위 사진처럼 쌓이게 됩니다. 여기서 중요한 것은 Stack처럼 위에서 뺄수가 없습니다. 즉 박스 배출구(Box Exit)를 통해서만 뺄수 있습니다.  이때 가장 위에 있는 것은(mango) Rear라고 합니다. 가장 마지막에 있는 것은(apple) Front라고 합니다. 이는 나갈때 사과 상자가 가장 앞에 있기 때문에 Front라고 하는 것입니다.  이제 자판기에 1000\을 넣고 사과 상자를 뺍니다. 이때 사과가 사라진 자리에 위에 올려져 있던 상자(망고,토마토,바나나)들이 한칸씩 내려요게 됩니다. 마찬가지로 돈을 넣어서 계속 상자를 빼다보면 마지막에 망고 박스가 나오는 것을 알수 있습니다. 이 처럼 Stack와 달리 Queue는 먼저 들어온 것이 먼저 나오는 구조로 취해져 있습니다.  다음글