Implements the LinkedList data structure

Here is the sample Code:

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

No comments:

Post a Comment