반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. 링크드리스트(LinkedList)

- 데이터와 포인터를 가진 노드가 한 줄로 연결되어 있는 방식의 자료구조

- 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 앞 노드와 뒤에 있는 노드를 연결

- 메모리의 동적할당을 기반으로 구현된 리스트

- 자료구조의 크기를 동적으로 조정할 수 있어서 메모리의 효율적인 사용이 가능

- 중간 부분에 데이터를 추가 및 삭제를 하더라도 뒤로 밀리거나 앞으로 당겨지는 일이 없어서 ArrayList에 비해 데이터의 추가 및 삭제가 용이함

- 하지만, 탐색을 할 경우에는 ArrayList보다 속도가 느림.

 

2. 링크드리스트(LinkedList)의 노드(Node)

- 링크드리스트(LinkedList)에서의 구성요소는 노드(Node)가 있다. 노드는 링크드리스트(LinkedList)에서 필요한 데이터를 가지고 있는 단위를 말한다.

- 링크 필드에 null을 가지고 있는 노드가 마지막 노드이다.

 

1) 데이터 필드

- 데이터 값을 저장하는 필드

 

2) 링크 필드

- 다음 노드의 주소를 저장하는 필드

 

3) 헤드(Head)

- 링크드리스트(LinkedList)에서 맨 처음 노드를 가리키는 레퍼런스

 

3. 링크드리스트(LinkedList) 구현

1) 링크드리스트(LinkedList) 선언

- 링크드리스트(LinkedList) 선언은 아래와 같이 import를 해줘야 합니다.

- import java.util.LinkedList;

import java.util.LinkedList;

public class Main {
	public static void main(String[] args) {
		//int형 링크드리스트 선언
		LinkedList<Integer> List = new LinkedList<>();
		
	}
}

 

2) 링크드리스트(LinkedList) 추가

- add(A) : A 추가

import java.util.LinkedList;

public class Main {
	public static void main(String[] args) {
		//int형 링크드리스트 선언
		LinkedList<Integer> List = new LinkedList<>();
		
		List.add(1); // 링크드리스트에 1 추가
		List.add(1, 10); // 링크드리스트에 1번째 인덱스 뒤에 10 추가 
		List.addFirst(2); // 링크드리스트 노드 맨 앞에 2추가
		List.addLast(3); // 링크드리스트 맨 뒤 노드에 3 추가
		
		
		// 1
		// 1 10
		// 2 1 10
		// 2 1 10 3
		//2 1 10 3 출력
		for(int i : List) System.out.println(i);
		
	}
}

 

3) 링크드리스트(LinkedList) 삭제

- remove()는 맨 앞의 노드를 삭제

- remove(index) : index 값의 위치 노드 삭제

- removeFirst() : 맨 앞의 노드를 삭제

- removeLast() : 맨 뒤의 노드를 삭제

import java.util.LinkedList;

public class Main {
	public static void main(String[] args) {
		//int형 링크드리스트 선언
		LinkedList<Integer> List = new LinkedList<>();
		
		List.add(1); // 링크드리스트에 1 추가
		List.add(1, 10); // 링크드리스트에 1번째 인덱스 뒤에 10 추가 
		List.addFirst(2); // 링크드리스트 노드 맨 앞에 2추가
		List.addLast(3); // 링크드리스트 맨 뒤 노드에 3 추가
		
		List.remove(); //링크드리스트 맨 앞 노드 삭제
		List.remove(1); //링크드리스트 1번째 인덱스 노드 삭제
		List.removeFirst(); //링크드리스트 맨 앞 노드 삭제
		List.removeLast(); //링크드리스트 맨 뒤 노드 삭제
		
		
		// 아무것도 출력되지 않음
		for(int i : List) System.out.println(i);
		
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기