Algorithm/Data Structure
4. LinkedList 구현하기
lee308812
2021. 2. 3. 22:58
[ 최종 구현(C#) ]
using System;
using System.Collections.Generic;
namespace Exercise
{
class MyLinkedListNode<T>
{
public T Data { get; set; }
public MyLinkedListNode<T> Prev = null;
public MyLinkedListNode<T> Next = null;
}
class MyLinkedList<T>
{
MyLinkedListNode<T> Head = null;
MyLinkedListNode<T> Tail = null;
public int Count { get; set; }
public MyLinkedListNode<T> AddLast(T item)
{
MyLinkedListNode<T> newNode = new MyLinkedListNode<T>() { Data = item };
if (Head == null)
{
Head = newNode;
}
if (Tail != null)
{
Tail.Next = newNode;
newNode.Prev = Tail;
}
Tail = newNode;
Count++;
return newNode;
}
public void RemoveAt(MyLinkedListNode<T> node)
{
if (node == Head) Head = node.Next;
if (node == Tail) Tail = node.Prev;
if(node.Prev != null)
{
node.Prev.Next = node.Next;
}
if(node.Next != null)
{
node.Next.Prev = node.Prev;
}
Count--;
}
}
class Program
{
static void Main(string[] args)
{
MyLinkedList<int> _data3 = new MyLinkedList<int>();
MyLinkedListNode<int> node1 = _data3.AddLast(101);
MyLinkedListNode<int> node2 = _data3.AddLast(102);
MyLinkedListNode<int> node3 = _data3.AddLast(103);
MyLinkedListNode<int> node4 = _data3.AddLast(104);
MyLinkedListNode<int> node5 = _data3.AddLast(105);
_data3.RemoveAt(node3);
_data3.RemoveAt(node2);
_data3.RemoveAt(node1);
_data3.RemoveAt(node4);
_data3.RemoveAt(node5);
}
}
}