본문 바로가기
C#

[C#] LinkedList<T>, LinkedListNode<T>

by DANEW 2023. 9. 10.

LinkedList<T> 클래스

 

LinkedList<T> 클래스 (System.Collections.Generic)

이중 연결 목록을 나타냅니다.

learn.microsoft.com

- 이중 연결 목록(Doubly Linked List; 이중으로 연결된 목록) 자료 구조를 나타내는 제네릭 클래스
- 새 요소를 목록의 어디에나 빠르게 삽입 할 수 있음
- 색인을 통해서 직접 접근하지 못하기 때문에 검색은 느림, 이진 탐색 역시 불가
- 색인 접근이 불가능하므로 IList<T>는 구현하지 않음

namespace System.Collections.Generic
{
    public class LinkedList<T> : ICollection<T>, IEnumerable<T>, IEnumerable, ICollection, IReadOnlyCollection<T>, ISerializable, IDeserializationCallback
    {
        public LinkedList();
        public LinkedList(IEnumerable<T> collection);
        protected LinkedList(SerializationInfo info, StreamingContext context);
 
        // 노드의 추가
        public LinkedListNode<T> AddFirst(T value);
        public void AddFirst(LinkedListNode<T> node);
 
        public LinkedListNode<T> AddLast(T value);
        public void AddLast(LinkedListNode<T> node);
 
        public LinkedListNode<T> AddAfter(LinkedListNode<T> node, T value);
        public void AddAfter(LinkedListNode<T> node, LinkedListNode<T> newNode);
 
        public LinkedListNode<T> AddBefore(LinkedListNode<T> node, T value);
        public void AddBefore(LinkedListNode<T> node, LinkedListNode<T> newNode);
 
 
        // 노드의 제거
        public void Clear();
        public void RemoveFirst();
        public void RemoveLast();
 
        public bool Remove(T value);
        public void Remove(LinkedListNode<T> node);
 
 
        // 노드 관련 속성
        public int Count { get; }
        public LinkedListNode<T> Last { get; }
        public LinkedListNode<T> First { get; }
 
 
        // 검색
        public bool Contains(T value);
        public LinkedListNode<T> Find(T value);
        public LinkedListNode<T> FindLast(T value);
 
 
        // 배열로 복사
        public void CopyTo(T[] array, int index);
 
 
        // 열거
        public Enumerator GetEnumerator();
 
        public struct Enumerator : IEnumerator<T>, IDisposable, IEnumerator, ISerializable, IDeserializationCallback
        {
            public T Current { get; }
            public void Dispose();
            public bool MoveNext();
        }
 
 
        // 직렬화
        public virtual void GetObjectData(SerializationInfo info, StreamingContext context);
        public virtual void OnDeserialization(object sender);
    }
}
반응형

LinkedListNode<T> 클래스

 

LinkedListNode<T> 클래스 (System.Collections.Generic)

LinkedList<T>의 노드를 나타냅니다. 이 클래스는 상속될 수 없습니다.

learn.microsoft.com

- LinkedList의 노드를 구현하는 클래스

namespace System.Collections.Generic
{
    public sealed class LinkedListNode<T>
    {
        public LinkedListNode(T value);
        public LinkedList<T> List { get; }
        public LinkedListNode<T> Next { get; }
        public LinkedListNode<T> Previous { get; }
        public T Value { get; set; }
    }
}

 

반응형

'C#' 카테고리의 다른 글

[C#] IDictionary<TKey,TValue>, IReadOnlyDictionary<TKey,TValue>, IDictionary  (0) 2023.09.20
[C#] HashSet<T>, SortedSet<T>  (0) 2023.09.16
[C#] BitArray  (0) 2023.09.14
[C#] Queue<T>, Queue, Stack<T>, Stack  (0) 2023.09.12
[C#] IList<T>, IList  (0) 2023.09.08
[C#] ICollection<T>, ICollection  (1) 2023.08.31
[C#] AppContext  (1) 2023.08.30
[C#] Process  (1) 2023.08.29