Csharp/C Sharp/Collections Data Structure/Your LinkedList

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

Implements the LinkedList data structure

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();
  }
}