오랜만에 자료구조를 직접 구현해보는 연습을 해보고있다. 스택은 자주 사용하는 자료구조이며, 어느정도 개념도 잘 알고 있다보니 직접 구현하는 게 어렵진 않았다. 그래서 나 스스로에게 미션(?)을 부여하면서 구현해보았다. 첫번째는, 제네릭을 사용해서 구현할 것. 두번째는, 스택의 구성은 배열과 링크드리스트 두가지 버젼을 구현해볼것. 이를 구현하기 위해서 인터페이스를 사용했다. 보통 스택에서 사용하는 메소드들을 인터페이스를 통해 선언해놓고 배열 스택과 링크드리스트 스택에서 구현하도록 했다. 역시 이때 요소의 타입은 제네릭을 사용하여 지정하도록 하였다. Stack public interface Stack { boolean add(E data); E pop(); E peek(); E get(int idx); bo..
오랜만에 손코딩 연습도 해볼겸 개념정리도 한번 할겸 자바로 링크드리스트를 구현해보았다. 링크드리스트는 노드가 연속적으로 다음 포인터를 가지고 있는 자료구조이다. 링크드 리스트의 개념이나 특징을 공부한 후에 구현해보는 것을 추천한다! 처음에는 데이터 타입을 그냥 가장 상위 클래스인 Object 클래스로 구현해보았다. 그렇게 하면 여러개의 다른 데이터 타입을 넣을 수는 있겠지만, 하나의 데이터 타입으로 고정할 수가 없었다. (예를 들면 자바 라이브러리 util에 있는 자료구조들처럼..) 그래서 제네릭 타입으로 구현하여 호출하는 쪽에서 타입을 지정하고, 다른 타입을 파라미터로 넣으면, 컴파일 오류가 나게하여 더 좋은 코드를 작성해보았다. 일반적으로, 컴파일 오류가 나게끔 하는 게 더 좋은 코드이다. 런타임 오..