[자료구조] 리스트(List)

ahnzioh·2023년 12월 6일
0

리스트

리스트(List)는 동적으로 크기가 조정될 수 있는 자료구조로, 여러 개의 요소를 순서대로 저장할 수 있다.

리스트의 특징

  • 동적으로 크기가 조정될 수 있어 요소를 쉽게 추가하거나 제거할 수 있다.
  • 요소들이 순서대로 저장되어 있어, 요소의 삽입 위치와 접근 순서가 중요하다.

예문

// 정수형 리스트 생성과 초기화
List<Integer> list = new ArrayList<>();

// 리스트에 값 추가
list.add(10);
list.add(20);
list.add(30);
list.add(40);

// 크기 4
int size = list.size(); 

// 리스트의 값 출력
for(int i = 0; i < size; i++){ 
	System.out.println(list.get(i);
}
//10
//20
//30
//40


// 리스트에서 값 제거
list.remove(2); // 인덱스 2에 있는 값 제거

// 변경된 리스트의 값 출력
for(int i = 0; i < size; i++){ 
	System.out.println(list.get(i);
}
//10
//20
//40

리스트의 종류

1. 배열 리스트(ArrayList)

List 인터페이스의 크기 조절이 가능한 동적 배열 기반의 리스트이다.
크기를 동적으로 조절하며 빠른 임의 접근이 가능하다.

2. 연결 리스트(LinkedList)

각 요소가 이전 요소와 다음 요소를 가리키는 방식으로 구현된다.
삽입, 삭제가 빠르지만 임의 접근이 상대적으로 느리다.

(1) 단일 연결리스트

각 노드가 다음 노드를 가리키는 방식으로 구성된 연결 리스트이다.
각 노드는 데이터와 다음 노드를 가리키는 링크(포인터)로 이루어져 있다.
구현이 쉽고 속도가 빠른 장점이 있지만 역방향 탐색이 어렵다.

(2) 이중 연결리스트

각 노드니 이전 노드와 다음 노드를 가리키는 링크를 가지는 연결 리스트이다.
이로 인해 양방향 탐색이 가능하다.
노드가 두 개의 링크를 가지므로 메모리 사용이 더 많다.

(3) 원형 연결리스트

단일 연결 리스트나 이중 연결 리스트에서 마지막 노드가 처음 노드를 가리키는 형태이다. 따라서 마지막 노드와 첫 번째 노드가 연결되어 순환구조를 가진다.
하나의 노드에서 다른 모든 노드로의 접근이 가능하여 삽입과 삭제가 용이하다.

Reference

profile
develop

0개의 댓글