Knowledge/자료구조

[Java/자료구조] 연결리스트(Linked List)의 특징

블로그 주인장 2023. 8. 11.

[ 목차 ]


    📢 연결 리스트(Linked List)

    • 데이터를 링크로 연결해서 관리하는 자료구조
    • 자료의 순서는 정해져 있지만, 메모리 상 연속성은 보장되지 않는다.

    🔊 연결 리스트(Linked List)의 장점

    • 데이터 공간을 미리 할당할 필요가 없음
    • 즉, 리스트의 길이가 가변적이라 데이터 관리(추가 및 삭제) 가 용이하다.

    🔊 연결 리스트(Linked List)의 단점

    • 연결 구조를 위한 별도의 데이터 공간이 필요하다.
    • 연결 정보를 찾는 시간이 필요하다(접근 속도가 상대적으로 느리다)
    • 데이터를 추가 및 삭제 시 앞 뒤 데이터의 연결을 재구성하는 작업이 필요하다

    🔊 연결 리스트의 기본 구조

    • 노드(Node) : 데이터 저장 단위로, 값과 포인터로 구성되어 있다.

    📢 연결 리스트의 기본 연산

    🔊 데이터 추가

    • 데이터 추가 : 데이터를 추가할 위치(Head, 중간, Tail) 에 따른 연결 작업이 필요하다.

    🔉 연결리스트의 가장 앞 부분에 데이터를 추가하는 상황

    • (1). 추가할 데이터를 담을 노드를 생성한다.
    • (2). 링크 연결 작업을 진행한다.
    • (3). Head를 이전하는 작업을 진행한다.

    🔉 연결리스트의 맨 마지막 부분에 데이터를 추가하는 상황

    • (1). 추가할 데이터를 담을 노드를 생성한다.
    • (2). Head로 부터 끝 노드까지 순회한다.
    • (3). 링크를 연결하는 작업을 진행한다.

    🔉 연결리스트의 중앙에 데이터를 추가하는 상황

    • (1). 추가할 데이터를 담을 노드를 생성한다.
    • (2). Head부터 데이터를 추가하는 위치 직전까지 노드를 순회한다.
    • (3). 링크를 연결하는 작업을 진행한다.

    🔊 데이터 삭제

    • 데이터 삭제 : 데이터를 삭제할 위치(Head, 중간, Tail)에 따른 연결 작업이 필요하다.

    🔉 연결리스트의 가장 앞 부분에 데이터를 삭제하는 상황

    • (1). 삭제할 대상의 노드를 지정한다(Delete_Node)
    • (2). Head를 이전하는 작업을 진행한다.
    • (3). Delete Node 삭제

    🔉 연결리스트의 맨 마지막 부분에 데이터를 삭제하는 상황

    • (1). Head로부터 가장 끝까지 순회한다.
    • (2). 끝 노드를 삭제한다.
    • (3). 삭제 이전 노드의 링크를 처리한다.

    🔉 연결리스트의 중앙에 데이터를 삭제하는 상황

    • (1). Head로부터 삭제 대상 노드까지 순회 및 해당 노드를 지정(Delete_Node)
    • (2). 삭제 대상 이전/이후 노드의 링크 연결 작업을 진행한다.
    • (3). Delete Node를 삭제한다.

    📢 노트 정리


    반응형

    댓글