• 26 minutes to read

C#으로 이중 연결 리스트 구현하기

이 글에서는 C# 언어를 사용하여 이중 연결 리스트를 구현하는 간단한 예제를 살펴보겠습니다. 이중 연결 리스트는 각 요소에 시퀀스의 이전 요소와 다음 요소에 대한 참조를 포함하는 요소들의 나열로 구성된 데이터 구조입니다. 이를 통해 정방향과 역방향 모두에서 효율적인 순회가 가능하며, 단일 연결 리스트의 제한을 해결할 수 있습니다.

소스 코드: DoublyLinkedList.cs

using System;

namespace DoublyLinkedList
{
    public class Node
    {
        public Node PrevNode;   // 역방향 포인터
        public string Name;      // 이름
        public string Phone;     // 전화번호
        public Node NextNode;    // 정방향 포인터
    }

    class Program
    {
        static Node GetNode()
        {
            return new Node();
        }

        static void Main(string[] args)
        {
            Node head, tail, current;

            // 역방향 리스트 생성
            tail = null;

            current = GetNode();
            current.Name = "aa";
            current.Phone = "11";

            current.PrevNode = tail;
            tail = current;

            current = GetNode();
            current.Name = "bb";
            current.Phone = "22";

            current.PrevNode = tail;
            tail = current;

            current = GetNode();
            current.Name = "cc";
            current.Phone = "33";

            current.PrevNode = tail;
            tail = current;

            // 정방향 리스트 생성
            current = tail;
            head = null;

            current.NextNode = head;
            head = current;
            current = current.PrevNode;

            current.NextNode = head;
            head = current;
            current = current.PrevNode;

            current.NextNode = head;
            head = current;
            current = current.PrevNode;

            // 정방향 리스트 출력
            current = head;

            Console.WriteLine($"{current.Name} {current.Phone}");
            current = current.NextNode;

            Console.WriteLine($"{current.Name} {current.Phone}");
            current = current.NextNode;

            Console.WriteLine($"{current.Name} {current.Phone}");
            current = current.NextNode;

            // 역방향 리스트 출력
            current = tail;

            Console.WriteLine($"{current.Name} {current.Phone}");
            current = current.PrevNode;

            Console.WriteLine($"{current.Name} {current.Phone}");
            current = current.PrevNode;

            Console.WriteLine($"{current.Name} {current.Phone}");
            current = current.PrevNode;
        }
    }
}
aa 11
bb 22
cc 33
cc 33
bb 22
aa 11

이 예제에서는 간단한 이중 연결 리스트를 생성하고 출력하는 과정을 구현하였습니다. 먼저, 이중 연결 리스트를 위한 클래스 Node를 정의하였고, 이후 객체를 생성하는 GetNode() 함수를 작성하였습니다.

Main() 함수에서는 이중 연결 리스트를 생성하고 출력하는 작업을 수행하며, 역방향 리스트와 정방향 리스트를 생성한 다음, 각 리스트를 출력하였습니다. 이 예제를 통해 이중 연결 리스트의 기본적인 개념과 구현 방법을 이해할 수 있습니다. 이중 연결 리스트는 다양한 애플리케이션에서 유용하게 사용될 수 있으며, 필요에 따라 더 복잡한 데이터 구조로 확장될 수 있습니다.

C# 언어를 사용하여 구현한 이중 연결 리스트 예제는 C 언어로 구현한 예제와 비슷하게 작동하며, 주요 차이점은 C#에서는 메모리 관리를 가비지 컬렉터가 자동으로 수행하기 때문에 동적 메모리 할당 및 해제를 수동으로 처리할 필요가 없다는 점입니다. 이러한 차이점을 고려하면서 예제를 따라하면서 이중 연결 리스트에 대한 이해를 높일 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com