Separeted Generic Nodes (Directed and Undirected)

This commit is contained in:
Luke Else 2022-04-02 21:22:20 +01:00
parent e5fa390608
commit 78df73e66d
6 changed files with 20 additions and 5 deletions

View File

@ -2,7 +2,7 @@
namespace C_.Datastructures.DoublyLinkedList namespace C_.Datastructures.DoublyLinkedList
{ {
internal class DoublyLinkedListNode<T> : Node<T, DoublyLinkedListNode<T>> internal class DoublyLinkedListNode<T> : UndirectedNode<T, DoublyLinkedListNode<T>>
{//Inherits from Node {//Inherits from Node
public DoublyLinkedListNode<T>? Prev { get; set; } = default; public DoublyLinkedListNode<T>? Prev { get; set; } = default;

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C_.Datastructures.Generic
{
internal class DirectedNode<T, NodeType>
{
public T? Value { get; set; } = default;
public NodeType? Left { get; set; } = default;
public NodeType? Right { get; set; } = default;
}
}

View File

@ -1,6 +1,6 @@
namespace C_.Datastructures.Generic namespace C_.Datastructures.Generic
{ {
internal class Node<T, NodeType> internal class UndirectedNode<T, NodeType>
{//Generic Node type that every other type inherits from {//Generic Node type that every other type inherits from
public T? Value { get; set; } = default; public T? Value { get; set; } = default;
public NodeType? Next { get; set; } = default; public NodeType? Next { get; set; } = default;

View File

@ -2,7 +2,7 @@
namespace C_.Datastructures.LinkedList namespace C_.Datastructures.LinkedList
{ {
internal class LinkedListNode<T> : Node<T, LinkedListNode<T>> internal class LinkedListNode<T> : UndirectedNode<T, LinkedListNode<T>>
{//Inherits from Node {//Inherits from Node
public static LinkedListNode<T> Create(T? value, LinkedListNode<T>? next) public static LinkedListNode<T> Create(T? value, LinkedListNode<T>? next)
{ {

View File

@ -2,7 +2,7 @@
namespace C_.Datastructures.Queue namespace C_.Datastructures.Queue
{ {
internal class QueueNode<T> : Node<T, QueueNode<T>> internal class QueueNode<T> : UndirectedNode<T, QueueNode<T>>
{ {
public static QueueNode<T> Create(T? value, QueueNode<T>? next) public static QueueNode<T> Create(T? value, QueueNode<T>? next)
{ {

View File

@ -2,7 +2,7 @@ using C_.Datastructures.Generic;
namespace C_.Datastructures.Stack namespace C_.Datastructures.Stack
{ {
internal class StackNode<T> : Node<T, StackNode<T>> internal class StackNode<T> : UndirectedNode<T, StackNode<T>>
{//Inherits from Node {//Inherits from Node
public static StackNode<T> Create(T? value, StackNode<T>? next) public static StackNode<T> Create(T? value, StackNode<T>? next)
{ {