A class representing a vector in Euclidean space.
class Vector { double[] a; public Vector(params double[] a) { this.a = a; } // length property public double length { get { double s = 0; foreach (double d in a) s += d * d; return Math.Sqrt(s); } } // indexer public double this[int index] { get { return a[index]; } set { a[index] = value; } } // dot product using overloaded operator public static double operator * (Vector v, Vector w) { double s = 0; for (int i = 0 ; i < v.length ; ++i) s += v[i] * w[i]; return s; } }
class DynArray { int[] a = new int[1]; int count; public int length { get => count; } public void add(int i) { if (count == a.Length) { int[] b = new int[count * 2]; for (int j = 0 ; j < count ; ++j) b[j] = a[j]; a = b; } a[count++] = i; } public int this[int index] { get => a[index]; set => a[index] = value; } }
class Node { public int i; public Node next; public Node(int i, Node next) { this.i = i; this.next = next; } } class LinkedStack { Node head; public bool isEmpty { get => (head == null); } public void push(int i) { head = new Node(i, head); } public int pop() { int i = head.i; head = head.next; return i; } }