본문 바로가기

자료구조

[C++] Queue Linked List 작성 이번엔 큐입니다. Stack에서는 맨 앞에있는 Top만 참조했었습니다. Queue의 개념은 이렇습니다. 가장 먼저들어온 녀석을 가장 먼저 처리해주는겁니다. 예로 매표소에 줄서있는 모습을 상상하시면 되는데요. A부터 순서대로 G까지 줄을 섰다고 가정하면 A B C D E F G 순으로 줄을 섰겠죠? 여기서 Queue자료형에서는 A를 가장 먼저 처리해줍니다. 먼저 줄선 사람들을 먼저처리해줘야 공평하겠죠?? 가장 먼저 들어온 A를 처리하면 B C D E F G 가 되겠네요 Queue에서는 빠른 처리를 위해 Front와 Rear 두개의 포인터변수를 둡니다. 앞쪽을 처리한다고하고(처리후 삭제) 뒷쪽에 새로운 데이터들이 줄을 선다고했을때 매번 List처럼 포인터를 끝까지 옮겨가면 시간적으로 비효율적이겠죠. 자료들이.. 더보기
[C++] STACK Linked List 작성 이번엔 Stack입니다. Stack이란, 리스트의 한가지 특수구조로 봐도 될것같은데요. 위로 쌓이는 물건들이라고 생각하면 쉽습니다. 맨처음 놓인 물건이 A 라고 하고 순서대로 G까지 쌓는다면, A B C D E F G 가 되겠죠? 맨 처음 들어온건 A이고 맨 나중에 들어온건 G입니다. 자, 여기서 제가 이것들을 옮기려고 합니다. 바닥에서부터 위로 쌓았다면 가장먼저 손이 가는것은?? G겠죠. 바닥위에 있는 A를 만지려면 위에있는 G F E D C B 를 모두 치워야 합니다. 이런 개념인데요. 맨 나중에 들어온것을 가장 먼저 처리하는 방식입니다. List라는것은 임의의 장소에 들어가도 무관합니다. 그러나, Stack은 임의의 장소가 아니라 Top(List에서 Head)만을 접근하는 방식입니다. List에서 .. 더보기
[C++/자료구조] Simple Linked List 작성 단순연결리스트라고 불리우는 자료형을 클래스로 작성해봤습니다. 선언부만 옮겨서 객체사용법만 설명드리고 자세한건 직접 다운받아 돌려보세요~ 작성된 환경은 비쥬얼스튜디오 2008입니다. 자 그럼 "list.h" 헤더파일을 옮겼습니다. typedef struct node { int Data ; struct node* Next ; } Node ; // 노드 구조체 정의 인트형의 데이터와 구조체로 정의되어 있는 노드를 가르키는 포인터변수 Next가 정의되어있습니다. 정수형변수 한개와 어떤 노드를 지정할 포인터변수 한개가 구조체로 묶여있네요. typedef Node* Nptr ; // 노드 포인터타입 정의 그리고 위의 구조체를 가르키는 포인터를 앞으로 Nptr이라고 하겠습니다. 소스코드에 별(*)이 덕지덕지 붙으면 .. 더보기
[자료구조] 생쥐의 미로 찾기 (우선법 알고리즘) 책을보다가 흥미로운 문제가 주어져서 직접 구현해봤습니다. 실행파일이 제대로 돌아갈지 모르겠네요 코딩된 환경은 비쥬얼 스튜디오 2008입니다. 이 글을 보실때에 기본적으로 링크드리스트(Linked List)에 대해 이해가 있어야할것 같습니다. C언어 상태로 짰습니다.. 책에서 우선법을 봤는데.. 우선법은 어떤 미로든지 오른손을 벽에 대고 가다보면 언젠간 도착지에 도달할수 있다라는 개념입니다. 서울대 학생분들이 이 알고리즘을 썼다고 합니다. 대단합니다~ 미로를 빠져나간 경로를 알고있다면 우선법으로 갔던길의 최단거리를 도출할수 있습니다. 좌표가 같은 구간(즉, 들어갔다가 다시 제자리로 나온) 사이 경로를 모두 삭제하는겁니다. A B C B F E 이런식이라면.. B와 C를 삭제하는겁니다.. 안으로 들어갈 필요.. 더보기