using System.Collections;
using System.Collections.Generic;
public static void Main(string[] args)
Queue<int> q = new Queue<int>();
Stack<int> s = new Stack<int>();
CustomQueue<int> queue = new CustomQueue<int>();
var value = queue.Dequeue();
Console.WriteLine("Queued value: {0}", value);
CustomStack<int> stack = new CustomStack<int>();
Console.WriteLine("Stack value: {0}", value);
private class CustomQueue<TObject> : IEnumerable<TObject>
LinkedList<TObject> list = new LinkedList<TObject>();
public IEnumerator<TObject> GetEnumerator() { return list.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); }
public void Enqueue(TObject item)
list.AddAfter(list.Last, item);
private class CustomStack<TObject> : IEnumerable<TObject>
LinkedList<TObject> list = new LinkedList<TObject>();
public IEnumerator<TObject> GetEnumerator() { return list.GetEnumerator(); }
IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); }
public void Push(TObject item)
list.AddAfter(list.Last, item);