본문 바로가기
코딩테스트 준비/자료구조 & 알고리즘

C# - 연결리스트 구현

by 코딩하는 돼징 2023. 9. 4.
반응형

1. 노드 생성하기

 class MyLinkedListNode<T>
{
    public T Data;
    public MyLinkedListNode<T> Next;
    public MyLinkedListNode<T> Prev;
}

그림 참조


2.  연결리스트 클래스

 class MyLinkedList<T>

01 연결리스트 기본 구조 설정

public MyLinkedListNode<T> Head = null; // 첫번째 노드
public MyLinkedListNode<T> Tail = null; // 마지막 노드
public int Count = 0; // 연결 리스트에 연결된 노드의 수

그림 참조


02 AddLast

 public MyLinkedListNode<T> AddLast(T data)
{
    MyLinkedListNode<T> newRoom = new MyLinkedListNode<T>();
    newRoom.Data = data;
}

1) 빈 연결 리스트인 경우

if (Head == null)
    Head = newRoom;

2) 빈 연결리스가 아닌 경우

if(Tail != null)
{
    Tail.Next = newRoom;
    newRoom.Prev = Tail;
}

3) 업데이트

Tail = newRoom;
Count++;
return newRoom;

03 Remove

1) 삭제하려는 노드가 Head인 경우

if (Head == room)
    Head = Head.Next

2) 삭제하려는 노드가 Tail인 경우

if (Tail == room)
    Tail = Tail.Prev;

3) 삭제하려는 노드의 Prev가 null이 아닌 경우

if (room.Prev != null)
    room.Prev.Next = room.Next;

4) 삭제하려는 노드의 Next가 null이 아닌 경우

if (room.Next != null)
    room.Next.Prev = room.Prev;

 

 

 

 

 

 

 

 

참고 :  본 내용은 MMORPG  PART2 강의를 수강하여 작성하였습니다.

https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part2/dashboard

 

 

 

 

 

 

반응형

댓글