아래 링크 된 목록을 구현하려고했습니다. 링크 된 목록을 사용했을 때 중간에 null 항목이 삽입 된 것 같습니다. 누구든지 살펴볼 수 있습니까? 문제는 추가 끝 방법에있을 수 있습니다.LinkedList 구현 버그
LinkedList<T>
public class LinkedList<T> : IEnumerable<T>
{
public Node<T> Head { get; set; }
public int Count { get; set; }
public LinkedList()
{
Head = new Node<T>();
}
public void AddStart(T data)
{
if (Head == null)
{
Head = new Node<T> {Value = data};
}
else
{
var newNode = new Node<T> {Value = data, Next = Head};
Head = newNode;
}
Count++;
}
public void AddEnd(T data)
{
var newNode = new Node<T> { Value = data, Next = null};
var current = Head;
if (Head == null)
{
Head = newNode;
}
else
{
while (current.Next != null)
{
current = current.Next;
}
current.Next = newNode;
}
}
public IEnumerator<T> GetEnumerator()
{
Node<T> current = Head;
while (current != null)
{
yield return current.Value;
current = current.Next;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
사용법 :
LinkedList<string> strings = new LinkedList<string>();
strings.AddStart("a");
strings.AddStart("b");
strings.AddStart("c");
strings.AddEnd("a");
strings.AddEnd("e");
strings.AddEnd("d");
결과 :
LinkedList<string> strings = new LinkedList<string>();
strings.AddStart("a");
strings.AddStart("b");
strings.AddStart("c");
strings.AddEnd("a");
strings.AddEnd("e");
strings.AddEnd("d");
strings.AddStart("a");
strings.AddEnd("b");
strings.AddStart("a");
strings.AddStart("b");
strings.AddStart("c");
strings.AddEnd("a");
strings.AddEnd("e");
strings.AddEnd("d");
결과 :합니다 (에 널 (null)을 주목
c
b
a
a
e
d
사용법 (중간에 널 (null)을 주목하라) 중간)
당신은 기본적으로 값을 사용하지 않고 노드가이 시점에서public LinkedList()
{
Head = new Node<T>();
}
: 당신이 당신의 LinkedList의를 초기화 할 때
c
b
a
a
c
b
a
a
e
d
b
a
e
d
빠르고 정확했습니다. 나는 그것이 매우 기초적이라고 믿을 수없고 당혹 스럽다. 설명 주셔서 감사합니다! 좋은 하루 되세요. – Sherwin
우리 모두는 같은 시점에 여러 번 붙어 있습니다. 당혹 스러울 것이 없습니다. – Marco