본문 바로가기

루프 발견 구현
루프 발견 2.8 문제 - 루프 발견 순환 연결리스트가 주어졌을때, 순환되는 부분의 첫째 노드를 반환 하는 알고리즘을 작성하라. 순환 연결리스트란 노드의 next 포인터가 앞선 노드들 가운데 어느 하나를 가리키도록 설정되어 있는 변질된 방식 의 연결리스트를 의미한다. 입력: A > B > C > D >E> C (앞에 나온 C와 같음) // 입력 0 > 1 > 2 > 3> 4> 5> 6> 7> 8> 9> 10 > 3 출력 : C // 출력 3 문제 해결 방법 1. 연결리스트에서 순환 구조의 유무 검사 -탐색 속도가 다른 2개의 포인터를 이용. (RUNNER 기법) -SLOW: P만큼 나아갈때 1칸 -FAST: 2P만큼 나아간다 2칸 -이용해서 만나면 순환구조가 있다고 볼 수 있다. -루프가 아닌부분의 크기를 K 라고..
Doubly linked list(이중 연결 리스트) 직접 구현 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859package DoublyLinkedList; public class DoublyMain { public static void main(String[] args) { DoublyLinkedList numbers = new DoublyLinkedList(); numbers.addFirst(30);//맨 앞에 추가 numbers.addFirst(20); numbers.addFirst(10); System.out.println(numbers); System.out.println(numbers.removeLast());..
단방향 연결리스트 직접구현 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package LinkedList;public class LinkedListMain { public static void main(String[] args) { LinkedList numbers = new LinkedList(); numbers.addFirst(30);//맨 앞에 추가 numbers.addFirst(20); numbers.addFirst(10); System.out.println(numbers);//출력 numbers.addLast(40);//맨 뒤에 추가 number..
양방향 연결리스트(Doubly LinkedList) api 예제 1. 양방향 LinkedList api 자바는 Doubly LinkedList 를 제공한다. https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html?noframes=true#LinkedList 2. DoublyLinkedList 예제 123456789101112131415161718192021222324252627282930313233343536373839package DoublyLinkedList; import java.util.LinkedList;import java.util.ListIterator; public class DoublyLinkedListApi { public static void main(String[] args) { ..
Linked list 와 Doubly linked list 의 개념과 차이점 1. Linked list 란 Array list의 경우 리스트의 엘리먼트가 배열의 엘리먼트인 반면에 linked list의 엘리먼트는 노드 객체를 사용 한다. 그래서 엘리먼트(노드 객체)와 엘리먼트(노드 객체)를 연결(link),레퍼런스를 통해서 리스트를 구현 한 것을 의미한다. Linked list 에서는 이 연결이 중요하다! 2. 단방향 Linked list 의 구조 - 각 노드는 다음 노드를 가리킨다 Node객체 안에 변수들을 봐보자 1) Data field : 저장되는 실제 값을 가리킨다 - 노드의 값(보통 value라는 변수 사용) 2) Link field : 다음 노드의 참조값, 주소값(보통 next라는 변수 사용)을 가리킨다. 이렇게 링크 필드로 노드와 노드를 연결시키는 방법을 사용 3) ..
ArrayList 직접 구현 ArrayList를 직접 구현해보았다. 코드 설명은 주석을 참고 바란다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package Arraylist; public class ArrayListMain { public static void main(String[] args) { ArrayList numbers = new ArrayList(); numbers.add(10);//마지막 추가 numbers.add(20); numbers.add(30); numbers.add(40); numbers.add(1,15);//첫번째에 추가 nu..
Java의 ArrayList 사용법 1. ArrayList Java에서 ArrayList는 가장 많이 사용되는 데이터 스트럭쳐일 것이다. Java의 콜렉션 프레임워크 라이브러리안에 ArrayList를 기본적으로 내장하고 있다. ArrayList는 List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다는특징을 갖는다. ArrayList는 기존의 Vector를 개선한 것으로 Vector와 구현원리와 기능적인 측면에서 동일하다고 할 수 있다. 2. ArrayList의 생성자와 메소드 https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html 3. ArrayList의 기본적인 예제 코드 1234567public class ArrayList extends Abst..