Created Linked List (incomplete)

This commit is contained in:
Luke Else 2022-03-03 10:12:42 +00:00
parent bad7445c9b
commit 8945da2569
2 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using C_.Datastructures.Nodes;
namespace C_.Datastructures
{
public class LinkedList<T>
{
public Node<T>? Head { get; set; } = default(Node<T>);
private int Count { get; set; } = 0;
public static LinkedList<T> Create(){
//Create a new empty list
return new LinkedList<T>();
}
public static LinkedList<T> Create(T value){
//Create a new Class with a single item
return new LinkedList<T>(){
Head = Node<T>.Create(value, null),
Count = 1
};
}
public static LinkedList<T> Create(LinkedList<T> list1, LinkedList<T> list2){
//Append a previous list to a new List
return null;
}
public void Add(T value){
Node<T> newItem = Node<T>.Create(value, default(Node<T>));
Count++;
//Set head to new item if list is empty
if (Head == null)
{
Head = newItem;
return;
}
//Find last item in list
Node<T>? end = Head;
if (end != null)
{
end = Traverse();
}
//Append item to end
end!.Next = new Node<T>{
Value = value,
Next = default(Node<T>)
};
}
private Node<T>? Traverse(){
//Start at Head of list
Node<T>? node = Head;
if (node == null)
{
//continue to end of list
while (node!.Next != default(Node<T>))
{
node = (Node<T>)node.Next;
}
}
return node;
}
private Node<T> Traverse(Node<T> start){
//Start at given point in list
Node<T> node = start;
if (node == null)
{
//Continue to end of list
while (node!.Next != default(Node<T>))
{
node = (Node<T>)node.Next;
}
}
return node;
}
}
}

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace C_.Datastructures.Nodes
{
public interface iNode<T>
{
public T? Value { get; set; }
public iNode<T>? Next { get; set; }
}
public class Node<T> : iNode<T>{
public T? Value { get; set; } = default(T);
public iNode<T>? Next { get; set; } = default(Node<T>);
public static Node<T> Create(T? value, Node<T>? next){
return new Node<T>{
Value = value,
Next = next
};
}
}
}