이중 연결 리스트란 이중 연결 리스트는 단일 연결 리스트보다 더 복잡하지만 장점이 있습니다. 이중 연결 리스트의 가장 큰 장점은 효율적으로 양방향 탐색할 수 있다는 것입니다. 각 노드의 이전 노드에 대한 포인터와 다음 노드에 대한 포인터 2개가 포함되어 있기 때문입니다. 이를 통해 노드를 빠르게 삽입 및 삭제할 수 있을 뿐만 아니라 탐색도 효율적으로 할 수 있습니다. 이중 연결 리스트 표현 데이터 다음 노드에 대한 포인터(next) 이전 노드에 대한 포인터(prev) 이중 연결 리스트 정의 class Node { int data; Node prev; Node next; } HEAD에서 prev는 null이고 TAIL에서 next가 null입니다.
1. 헤드 삭제하는 방법 temp = head head = head -> next free(temp) 2.끝 삭제하는 방법 prev는 마지막 두 번째 노드를 가리키고 prev의 next를 null로 만들고 end는 삭제합니다. Node end = head; Node prev = null while(end->next) { prev = end end = end->next } prev->next = null free(end) 3. 특정 위치 삭제하는 방법 삭제할 노드 앞의 포인터와 삭제할 노드에 대한 포인터를 찾습니다. temp = head; prev = head; for(int i = 0; i ne..
1. 앞에 노드를 추가하는 방법 첫 번째 노드를 새로운 노드에 연결합니다. 첫 번째 노드에서 헤드를 제거합니다. 새 노드를 헤드로 만듭니다. public class SinglyLinkedList { static Node head; static class Node { int data; Node next; Node(int d) { this.data = d; this.next = null; } } static void push(int newData) { Node newNode = new Node(newData); newNode.next = head; head = newNode; } public static void main(String[] args) { push(3); push(2); push(1); prin..
단일 연결 리스트는 각 노드가 연결 리스트의 다음 노드를 가리키는 링크가 하나만 있는 연결 리스트입니다. 단일 연결 리스트의 특징 데이터와 다음 노드의 대한 참조가 들어있습니다. 첫 번째 노드에 해당하는 헤드와 마지막 노드에 해당하는 꼬리 포인터에는 null이 있습니다. 인접한 메모리 블록에 저장되지 않지만 각 노드에는 다음 노드의 주소가 있습니다. 원하는 노드에 접근하기 위해서는 리스트를 헤드부터 순회해야합니다. 단일 연결 리스트의 장점 동적 메모리 할당을 허용합니다. 노드가 추가되거나 삭제됨에 따라 런타임에서 리스트의 크기가 변경될 수 있습니다. 노드가 별도의 캐시 라인에 저장되어 캐시 누락을 줄이고 캐시 성능을 향상시킬 수 있습니다. 연속 메모리 블록이 아닌 노드에 대한 참조만 저장하면 되므로 공간..
Linked list란 각 노드가 데이터와 시퀀스의 다음 노드에 대한 링크를 포함하는 노드로 구성됩니다. 배열에 비해 동적 메모리 할당과 효율적인 삽입 및 삭제 작업이 가능합니다. 정리하자면 연결리스트는 포인터로 연결된 일련의 노드로 구성된 선형 데이터 구조입니다. 각 노드에는 데이터와 다음 노드에 대한 참조가 포함되어 있습니다. 배열과 달리 연결리스트는 노드가 메모리에 연속적으로 저장되지 않으므로 모든 위치에 요소를 효율적으로 삽입, 삭제할 수 있습니다. 배열과 연결 리스트의 차이점 배열 : 인접한 메모리 위치에 요소를 저장하여 저장된 요소에 대해 쉽게 계산할 수 있는 주소를 생성하고 이를 통해 특정 인덱스 요소에 더 빠르게 접근할 수 있습니다. 배열 연결리스트 인접한 위치 저장 인접한 위치에 저장되지..
JAVA에서는 스택과 힙 공간이 JVM의 일부입니다. 스택 공간에는 수명이 짧은 특정 값이 포함되고 힙 공간에는 JAVA 객체 및 JRE 클래스가 포함됩니다. 문자열은 힙 영역에 저장됩니다. String은 클래스이고 JAVA의 문자열은 객체로 취급되므로 String 클래스의 객체는 힙에 저장됩니다. 문자열을 만드는 방법은 2가지가 있습니다. 문자열 리터널 new 키워드를 사용 문자열 리터널은 "를 이용한 방법입니다. String s = "hello wolrd" JVM은 문자열 상수풀을 확인합니다. 문자열이 없으면 새 문자열 인스턴스가 생성되고 풀에 배치됩니다. 동일한 문자열이 있으면 새 개체를 생성하지 않고 동일한 인스턴스에 대한 참조를 반환합니다. 이러한 문자열 인스턴스를 저장하는 캐시를 문자열 상수풀..