Added indexing methods to linked list

This commit is contained in:
2022-03-04 10:10:55 +00:00
parent 2382011f26
commit dc2768f1ac
3 changed files with 68 additions and 8 deletions

View File

@ -42,9 +42,26 @@ namespace C_.Datastructures
return list;
}
public T? this[int i]
{
get {
Node<T> node = Traverse(i);
if (node != null) return node.Value;
return default(T);
}
set
{
if (i < Count)
{
Node<T> node = Traverse(i);
node.Value = value;
}
}
}
public void Add(T value){
public void Append(T value){
Node<T> newItem = Node<T>.Create(value, default(Node<T>));
Count++;
@ -96,5 +113,21 @@ namespace C_.Datastructures
}
return node;
}
private Node<T>? Traverse(int n)
{
//Start at given point in list
Node<T>? node = Head;
if (node != null)
{
//Continue to end of list
for (int i = 0; i < n; i++)
{
if (node.Next == null) return null;
node = (Node<T>)node.Next;
}
}
return node;
}
}
}