// // This file contains the C# code from Program 4.20 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/pgm04_20.txt // public class LinkedList { protected Element head; protected Element tail; public void Extract(object item) { Element ptr = head; Element prevPtr = null; while (ptr != null && ptr.datum != item) { prevPtr = ptr; ptr = ptr.next; } if (ptr == null) throw new ArgumentException("item not found"); if (ptr == head) head = ptr.next; else prevPtr.next = ptr.next; if (ptr == tail) tail = prevPtr; } // ... }