C#でリンクリストを作成し、確実に動作することを確認するために単体テストカバレッジを持っています。IEnumerable <T>をC#のリンクリストに実装する
リンクされたリストを多数の値と簡単に比較するために、私はCurrentNode.Next!= nullで標準を使用して値を「列挙」し、これらの値をC#リストまたは配列に格納します。
カスタムLinkedListクラスにIEnumerableを実装し、プライベートバッキングコレクションから列挙子を取得することに依存しません。
私のLinkedListクラスのコードは次のとおりです。列挙子は、私が知る限り、開始点と次のメソッドを提供するコレクションクラスから取得するオブジェクトでなければならないので、私は単純なものを見落としているように感じます。私はそれを一般的な方法で動作させることができません。
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpLibrary.DataStructures.LinkedLists
{
public class LinkedList<T> : IEnumerable<T>
{
public Node<T> First { get; private set; }
public Node<T> Current { get; set; }
public LinkedList(T initialValue)
{
First = new Node<T>(initialValue);
}
public void AddNodeToEnd(T value)
{
Node<T> last = GetLastNode();
last.Next = new Node<T>(value);
}
public Node<T> GetLastNode()
{
Node<T> last = First;
Node<T> current = First;
while (current.Next != null)
{
last = current.Next;
current = current.Next;
}
return current;
}
public void Reset()
{
Current = First;
}
public IEnumerator<T> GetEnumerator()
{
throw new NotImplementedException();
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
}
Btwは、親クラスから 'Current'と' Reset() 'を削除しますが、そこには属しません。 – Groo
@Grooありがとう、私は誤ってインターフェイスではなく、リンクリストコレクションクラスでこれらのナビゲーションメソッドを実装していました。 –