[DataStructure&Algorithm] LinkedList

2024. 4. 19. 18:01· 자료구조&알고리즘
목차
  1. 개요 - LinkedList란?
  2. 특징
  3. 선언 및 초기화
  4. 메서드
  5. 응용
728x90
반응형

자료구조 및 알고리즘


개요 - LinkedList란?

LinkedList란 말 그대로 Link되어 있는 List라는 뜻이다. LinkedList의 한 원소는 노드(node)라고도 하며, 하나의 노드에는 value와 pointer가 존재한다.

value에는 초기에 넣은 값이 존재하며, pointer는 다음 노드를 가리키게 된다. LinkedList는 선형과 원형 2가지의 형태가 존재하는데, 마지막 노드의 pointer값이 null인 경우는 선형 LinkedList, 마지막 노드의 pointer값이 맨 앞의 노드를 가리킨다면, 꼬리를 무는 형태가 되어 원형 LinkedList라고 한다.

 

자바에서는 CircularLinkedList는 구현되어 있지 않으므로, 궁금하다면 검색을 통해 공부하는 것이 좋을 것같다.

 

LinkedList에서 노드를 추가할 때는, 들어가고자 하는 자리 앞의 노드의 next potiner가 현재 삽입하려고하는 노드를 가리키게하고, 삽입하려고하는 노드의 next pointer가 다음 노드를 가리키게하면 자연스럽게 삽입 연산이 된다.

삭제를 할 때는, 삭제하고자하는 노드의 이전 노드에서 그 다음 노드를 가리키게되면 자연스럽게 삭제 연산이 된다.

 

따라서, 삭제와 수정, 추가가 용이하다는 것을 알 수 있다.


특징

  • 각 노드는 다음 노드를 가리키고있다.
  • 크기가 정해져있지 않아, 공간을 확보할 필요가 없다.
  • 데이터의 추가 및 수정, 삭제가 용이하다.
  • 연결구조를 위한 별도의 공간이 필요하다.
  • 노드 삭제시, 연결 재구성이 필요하다 (pointer 주소 변경)

선언 및 초기화

import java.util.LinkedList;

class Main{
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
    }
}

메서드

import java.util.LinkedList;

class Main{
    public static void main(String[] args) {
        // LinkedList 기본 선언
        LinkedList<String> list = new LinkedList<>();
    
        // 메서드들
        // 1. add() : 리스트의 맨 뒤에 추가
        list.add("A");
        list.add("B");
        list.add("C");
        
        // 2. add(index, element) : 리스트의 index에 element 추가
        list.add(1, "D");
        
        // 3. addFirst() : 리스트의 맨 앞에 추가
        list.addFirst("E");
        
        // 4. addLast() : 리스트의 맨 뒤에 추가
        list.addLast("F");
        
        // 5. get(index) : index에 해당하는 element 반환
        System.out.println(list.get(0));
        
        // 6. getFirst() : 리스트의 맨 앞 element 반환
        System.out.println(list.getFirst());
        
        // 7. getLast() : 리스트의 맨 뒤 element 반환
        System.out.println(list.getLast());
        
        // 8. remove(index) : index에 해당하는 element 삭제
        list.remove(0);
        
        // 9. removeFirst() : 리스트의 맨 앞 element 삭제
        list.removeFirst();
        
        // 10. removeLast() : 리스트의 맨 뒤 element 삭제
        list.removeLast();
        
        // 11. size() : 리스트의 크기 반환
        System.out.println(list.size());
        
        // 12. clear() : 리스트의 모든 element 삭제
        list.clear();
        
        // 13. isEmpty() : 리스트가 비어있는지 확인
        System.out.println(list.isEmpty());
        
        // 14. indexOf() : element의 index 반환
        list.add("A");
        list.add("B");
        list.add("C");
        System.out.println(list.indexOf("B"));
        
        // 15. contains() : element가 리스트에 포함되어 있는지 확인
        System.out.println(list.contains("B"));
        
        // 16. set(index, element) : index에 해당하는 element를 변경
        list.set(1, "D");
        
        // 17. toArray() : 리스트를 배열로 변환
        Object[] array = list.toArray();
        
    }
}

응용

  • 어떠한 순서를 가진 데이터들을 처리할 때
  • 이전의 값이 현재의 값에 영향을 줄 때
728x90
반응형
저작자표시 (새창열림)

'자료구조&알고리즘' 카테고리의 다른 글

[DataStructure&Algorithm] DFS, 깊이 우선 탐색  (0) 2024.04.29
[DataStructure&Algorithm] Heap, 힙  (0) 2024.04.21
[DataStructure&Algorithm] HashMap  (1) 2024.04.19
[DataStructure&Algorithm] Array  (0) 2024.04.19
[DataStructure & Algorithm] Queue  (0) 2024.04.16
  1. 개요 - LinkedList란?
  2. 특징
  3. 선언 및 초기화
  4. 메서드
  5. 응용
'자료구조&알고리즘' 카테고리의 다른 글
  • [DataStructure&Algorithm] DFS, 깊이 우선 탐색
  • [DataStructure&Algorithm] Heap, 힙
  • [DataStructure&Algorithm] HashMap
  • [DataStructure&Algorithm] Array
heesang0930
heesang0930
백엔드 개발자로 성공하고 싶은 사람의 블로그
반응형
250x250
heesang0930
Tech Blog
heesang0930
전체
오늘
어제
10-02 03:36
  • 분류 전체보기
    • 책
    • Lang
    • Backend
      • Framework
      • Deployment
    • Cloud
    • 데이터베이스
    • Architecture
      • Monitoring
    • CS
    • 코딩 테스트
    • 자료구조&알고리즘
    • etc..
    • 공부

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • GitHub
  • Medium
  • will-post list

공지사항

  • 신입 백엔드개발자

인기 글

hELLO · Designed By 정상우.v4.2.2
heesang0930
[DataStructure&Algorithm] LinkedList
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.