Csharp/C Sharp/Collections Data Structure/Your LinkedList

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Implements the LinkedList data structure

<source lang="csharp"> using System; class Node {

 internal Object data;
 internal Node next;

 public Node(Object o, Node n){
   data = o;
   next = n;
 }

} public class LinkedList {

 private Node head;
 private Node previous;
 private Node current;
 
 public LinkedList() {
   head = null;
   previous = null;
   current = null;
 }
 public bool IsEmpty() {
   return head == null;
 }
 public void Insert(Object o) {
   Node n = new Node(o,current);
   if (previous == null)
     head = n;
   else 
     previous.next = n;
   current = n;
 }
 public void Remove() {
   if (head != null){
     if (previous == null)
       head = head.next;
     else 
       previous.next = current.next;
     current = current.next;
   }
 }
 public Object GetData(){
   if (current != null) 
     return current.data;
   return null;
 }
 public bool AtEnd() {
   return current == null;
 }
 public void Advance(){
   if (!AtEnd()){
     previous = current;
     current = current .next;
   }
 }
 public void Reset() {
   previous = null;
   current = head;
 }
 public void Display() {
   Reset();
   if (head != null) 
     do {
       Console.WriteLine("   {0}", GetData());
       Advance();
     }while (!AtEnd());
 }    
 public static void Main() {
   LinkedList list = new LinkedList();
   Console.WriteLine("Is Empty {0}",list.IsEmpty());
   list.Insert("A");
   list.Insert("B");
   list.Insert("C");
   Console.WriteLine("The original list is:");
   list.Display();
   list.Reset();
   list.Advance();
   Console.WriteLine("The current element is {0}",list.GetData());
   list.Remove();
   list.Display();
 }

}

      </source>