자료구조) 이중 연결 리스트 (Double Linked List) - 1
·
Programming/자료구조 & 알고리즘
이중 연결 리스트기존의 방법(단일 연결 리스트)으로 리스트의 데이터를 찾으려면 링크를 타고, 타고, 타고 내려가서 맞는게 나올때까지 들어가야 했다.이 방법을 어떻게 개선할 수는 없을까?그림처럼 노드를 두 개로 만들면 된다. 이전 노드의 주소를 저장하는 노드(PrevNode)와 다음 노드의 주소를 저장하는 노드(NextNode).이제 우리는 양방향으로 데이터를 찾을 수 있게 되었다.이 방식의 장점은 단일 연결 리스트에 비해 접근이 빠르다는 점이다. 예를 들어 1000개의 데이터 중 900번째 데이터에 접근해야 한다면 단일 연결 리스트는 900번 이동해야 하지만, 이중 연결 리스트는 꼬리부터 100번 움직이면 접근할 수 있다. 이중 연결 리스트에 다른 노드를 연결은 어떻게 할 수 있을까? 맨 처음 상태이다...
자료구조) 연결 리스트(Linked List)
·
Programming/자료구조 & 알고리즘
가변형 배열에 대하여연결 리스트는 자료구조를 공부할 때 가장 먼저 나오는 자료구조이다.이 리스트라는 이름에서 유추 가능한 것처럼 목록 형태로 이루어진 데이터 형식을 의미한다. 왜 연결 리스트를 사용하는가?데이터가 고정되어 있다면, 즉 수가 정해져 있다면  = 당연히 배열을 사용하면 된다.예를 들어 이 맵에 라이트가 4개 정도 배치될 것이다 라고 한다면 Light light[4]; 처럼 사용하면 된다.혹은 array light(4) 같은 식으로 말이다. 그러나 일반적인 배열로는 IEnumerator를 다룰 수 없다. 무슨 소리냐면, 배열이 늘었다, 줄었다 하는 상황을 컨트롤 할 수 없다는 것이다. 수가 한정된 상황이라면 제어가 가능할 수도 있지만, 대부분의 상황은 그런식으로 흘러가지 않는다. 따라서 가변형..
자료구조) 템플릿, 인라인
·
Programming/자료구조 & 알고리즘
템플릿은 함수나 클래스를 찍어내듯이 만들수 있도록 일반화(generic) 시켜주는 도구이다.템플릿과 유사한 함수가 바로 인라인 함수인데, 둘의 차이점은 템플릿 = 그 지점에 복사해서 자료형을 매핑해서 복사해준다.인라인 = 라인 안에 코드를 복사해서 넣어주겠다.이다. 인라인이 성립하는 조건은 두 가지가 있는데,1. 인라인 키워드가 붙어 있을 때.2. 클래스 내부에 선언과 정의를 동시에 할 것.이 조건을 만족하는 예시class A{ inline int add() { return 0; } // 즉시 종료}; 이런 경우이거나,class A{ int add() {}}; 이런 경우를 말한다. 템플릿 또한 마찬가지로, 템플릿 선언은 다음과 같이 할 수 있다.templetevoid Add(T a){ }Add()..