// // This file contains the C# code from Program 7.9 of // "Data Structures and Algorithms // with Object-Oriented Design Patterns in C#" // by Bruno R. Preiss. // // Copyright (c) 2001--2002 by Bruno R. Preiss, P.Eng. All rights reserved. // // http://www.brpreiss.com/books/opus6/programs/pgm07_09.txt // public class OrderedListAsArray : AbstractSearchableContainer, OrderedList { protected ComparableObject[] array; protected class MyCursor : Cursor { private OrderedListAsArray list; private int offset; public virtual void InsertAfter(ComparableObject obj) { if (offset < 0 || offset >= list.count) throw new IndexOutOfRangeException(); if (list.count == list.array.Length) throw new ContainerFullException(); int insertPosition = offset + 1; for (int i = list.count; i > insertPosition; --i) list.array[i] = list.array[i - 1]; list.array[insertPosition] = obj; ++list.count; } // ... } // ... }