public Node(int info, Node prev, Node next) { this.info = info; this.prev = prev; this.next = next; }
//public bool isHead{ //} public object Clone(List list) { Node p = this.Next; Node first; Node last; Node prev; Node c; first = new Node(this.Info,null,null); last = first.Next; //prelast = first; prev = first; c=null; while (p!=list.Head){ c.Prev.Next = c = new Node(p.Info,last,null); c.Prev = prev; prev=c; p = p.Next; } return first; }
public void Remove(Node node) { Node fnode = head.Next.Next; while (node != head && fnode != node) fnode = fnode.Next; if (fnode == node) { fnode.Next.Prev = fnode.Prev; fnode.Prev.Next = fnode.Next; } else throw new InvalidOperationException("«аданный узел не принадлежит этому списку"); }
public void Add(Node pointer) { Node q = Head.Next; while (q!=Head){ q=q.Next; } q.Next = pointer; pointer.Prev = q; }
public int IndexOf(Node node) { Node buf = head.Next; int i = 0; while (buf != head && buf != node) { buf = buf.Next; i++; } if (buf == head) i = -1; return i; }
public void Create(int[] values, string[] strValues) { if (head != null && values != null) { Node node; for (int i = values.Length - 1; i >= 0; i--) { node = new Node(values[i], head, head.Next); head.Next.Prev = node; head.Next = node; } } }
public List() { head = new Node(); head.Prev = head; head.Next = head; }
public List Clone(bool attemptDeepCopy) { List listClone = new List(); if (attemptDeepCopy) { Node prev = listClone.Head; // new Head Node c = Head.Next; Node q = null; while (c!=Head){ q = new Node(c.Info,null,null); q.Prev = prev; prev.Next = q; c = c.Next; prev = prev.Next; } q.Next = listClone.Head; } else listClone = (List)this.Clone(); return listClone; }
public void Add(int value) { Node q = new Node(value,Head.Prev,Head); Head.Prev = q; if (Head.Next = null) Head.Next =q; }