728x90
namespace Algorithm
{
class MyLinkedListNode<T>
{
public T Data;
// 참조, 주소 값을 저장
public MyLinkedListNode<T> Next; // 다음 값
public MyLinkedListNode<T> Prev; // 이전 값
}
class MyLinkedList<T>
{
public MyLinkedListNode<T> Head = null; // 첫번째 방
public MyLinkedListNode<T> Tail = null; // 마지막 방
public int Count = 0; // 총 방의 개수
public MyLinkedListNode<T> AddLast(T data)
{
MyLinkedListNode<T> newRoom = new MyLinkedListNode<T>();
newRoom.Data = data;
// 방이 없다면 새로운 방이 첫번째 방
if (Head == null)
{
Head = newRoom;
}
// 기존의 마지막 방을 새로 추가된 방과 연결
if (Tail != null)
{
Tail.Next = newRoom;
newRoom.Prev = Tail;
}
// 새로 추가된 방을 마지막 방으로 지정
Tail = newRoom;
Count++;
return newRoom;
}
public void Remove(MyLinkedListNode<T> room)
{
// 기존의 두번째 방을 첫번째 방으로 지정
if (Head == room)
{
Head = Head.Next;
}
// 마지막 전 방을 마지막으로 지정
if (Tail == room)
{
Tail = Tail.Prev;
}
// 제거한 방의 전 방의 다음 방을 제거한 방의 다음으로 지정
if (room.Prev != null)
{
room.Prev.Next = room.Next;
}
// 제거한 방의 다음 방의 전 방을 제거한 방의 전 방으로 지정
if (room.Next != null)
{
room.Next.Prev = room.Prev;
}
}
}
class Board
{
public MyLinkedList<int> _data3 = new MyLinkedList<int>(); // 연결 리스트
// 연결 리스트 구현 연습
public void Initialize()
{
_data3.AddLast(101); // 맨 뒤에 값을 추가
_data3.AddLast(102);
MyLinkedListNode<int> node = _data3.AddLast(103);
_data3.AddLast(104);
_data3.AddLast(105);
_data3.Remove(node);
}
}
}728x90
'C# > 코드' 카테고리의 다른 글
| C# 맵 그리기 (0) | 2021.09.14 |
|---|---|
| C# 동적 배열 만들기 (0) | 2021.09.09 |
| C# 다차원 배열을 이용한 코드 (0) | 2021.09.01 |