diff --git a/CSharp/1-single.cs b/CSharp/1-single.cs new file mode 100644 index 0000000..51f9292 --- /dev/null +++ b/CSharp/1-single.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LinkedList +{ + class SingleLinkedList + { + private Node last = null; + + private class Node + { + internal T item; + internal Node previous; + } + + public bool isEmpty() + { + return last == null; + } + + public void addNode(T item) + { + Node oldLast = last; + last = new Node(); + last.item = item; + last.previous = oldLast; + } + + public List returnList() + { + List res = new List(); + Node temp = last; + T item = default(T); + while (!isEmpty()) + { + item = last.item; + last = last.previous; + res.Add(item); + } + last = temp; + return res; + } + } +} diff --git a/CSharp/2-doubly.cs b/CSharp/2-doubly.cs new file mode 100644 index 0000000..52c4b41 --- /dev/null +++ b/CSharp/2-doubly.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace LinkedList +{ + class DoubleLinkedList + { + private Node last = null; + + private class Node + { + internal T item; + internal Node next; + internal Node previous; + } + + public bool isEmpty() + { + return last == null; + } + + public void addNode(T item) + { + Node oldLast = last; + last = new Node(); + last.item = item; + last.previous = oldLast; + if (oldLast != null) + { + oldLast.next = last; + } + } + + public List returnList() + { + List res = new List(); + Node temp = last; + T item = default(T); + while (!isEmpty()) + { + item = last.item; + last = last.previous; + res.Add(item); + } + last = temp; + return res; + } + } +}