• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • C# 프로그래밍의 기초: LinkedList
    2024년 08월 24일
    • 유니얼
    • 작성자
    • 2024.08.24.:08
    728x90

    LinkedList<T>는 C#에서 제공하는 이중 연결 리스트 구현체로, 각 요소가 노드(Node) 형태로 구성되어 있으며, 각 노드는 데이터와 함께 다음 및 이전 노드에 대한 참조를 포함합니다. 이 자료구조는 데이터의 동적인 추가 및 삭제에 최적화되어 있으며, 배열이나 일반 리스트에 비해 중간 삽입 및 삭제 작업에서 뛰어난 효율을 제공합니다. 이 블로그 포스트에서는 LinkedList<T>의 특징, 주요 메서드, 사용 시 고려해야 할 사항을 살펴보겠습니다.

    LinkedList의 주요 특징

    1. 이중 연결 리스트: C#의 LinkedList<T>는 각 노드가 이전 및 다음 노드의 참조를 유지하는 이중 연결 리스트로 구현됩니다. 이 구조는 리스트의 양쪽 끝에서의 추가 및 제거를 용이하게 합니다.
    2. 동적 크기 조정: LinkedList는 요소의 추가 및 제거에 따라 크기가 자동으로 조정됩니다. 이는 고정 크기의 배열과는 대조적으로, 런타임 중에 컬렉션의 크기를 자유롭게 변경할 수 있음을 의미합니다.
    3. 순차 접근: 인덱스를 통한 임의 접근이 제공되지 않으며, 요소에 접근하기 위해서는 순차적으로 탐색해야 합니다. 이는 요소가 많은 경우 성능 저하를 초래할 수 있습니다.
    4. 삽입/삭제 효율성: LinkedList는 중간에 요소를 삽입하거나 제거할 때 배열이나 List<T>에 비해 뛰어난 성능을 제공합니다. 노드 사이에 새 노드를 추가하거나 기존 노드를 제거하는 작업은 O(1) 시간 복잡도로 처리됩니다.

    주요 메서드 및 사용 방법

    • AddFirst(T item): 리스트의 시작 부분에 새 요소를 추가합니다.
    • AddLast(T item): 리스트의 끝 부분에 새 요소를 추가합니다.
    • AddBefore(LinkedListNode<T> node, T item), AddAfter(LinkedListNode<T> node, T item): 지정된 노드의 앞이나 뒤에 새 요소를 삽입합니다.
    • Remove(T item): 특정 요소를 제거합니다.
    • RemoveFirst(), RemoveLast(): 리스트의 첫 번째 또는 마지막 요소를 제거합니다.
    • Count: 리스트에 저장된 요소의 수를 반환합니다.

    전체예제 코드

    using System;
    using System.Collections.Generic;
    
    namespace CSharp_ProgramingStudy.Chapter6_DataStructure
    {
        public class Class8
        {
            public void Run()
            {
                // 정수를 저장하는 LinkedList 생성
                LinkedList<int> numbers = new LinkedList<int>();
    
                // 리스트에 요소 추가
                numbers.AddLast(1); // 마지막에 1 추가
                numbers.AddLast(2); // 마지막에 2 추가
                numbers.AddFirst(0); // 처음에 0 추가
    
                // LinkedList의 첫 번째 노드에 접근
                LinkedListNode<int> firstNode = numbers.First;
                Console.WriteLine($"First element: {firstNode.Value}"); // 출력: First element: 0
    
                // 특정 노드 뒤에 요소 추가
                numbers.AddAfter(firstNode, 5); // 첫 번째 노드(0) 뒤에 5를 삽입
    
                // LinkedList의 모든 요소 출력
                Console.WriteLine("LinkedList elements:");
                foreach (int number in numbers)
                {
                    Console.WriteLine(number); // 출력: 0, 5, 1, 2
                }
    
                // 요소 제거
                numbers.Remove(5); // 값이 5인 첫 번째 요소를 제거
    
                // 첫 번째 요소 제거
                numbers.RemoveFirst();
    
                // 마지막 요소 제거
                numbers.RemoveLast();
    
                // 요소 제거 후 LinkedList 출력
                Console.WriteLine("After removing elements:");
                foreach (int number in numbers)
                {
                    Console.WriteLine(number); // 출력: 1
                }
    
                // LinkedList의 크기 확인
                Console.WriteLine($"Number of elements: {numbers.Count}"); // 출력: Number of elements: 1
            }
        }
    }

    결론

    LinkedList<T>는 유연성이 필요한 다양한 상황에서 유용하게 사용될 수 있는 자료구조입니다. 중간 삽입 및 삭제가 빈번하게 발생하는 애플리케이션, 예를 들어 문서 편집기나 실시간 데이터 처리 시스템에서 특히 유리합니다. 그러나 요소에 대한 빠른 임의 접근이 필요한 경우에는 List<T>나 배열을 사용하는 것이 더 효과적일 수 있습니다. 따라서 LinkedList의 사용은 그 특성을 이해하고 적절한 상황에서 선택적으로 활용하는 것이 중요합니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바