public bool Remove(T obj) { LinkedObject <T> lo = pFirst; while (lo != null) { if (lo._object.Equals(obj)) { if (pFirst.Equals(lo)) { pFirst = pFirst.pNext; } if (pLast.Equals(lo)) { pLast = pLast.pPrev; } lo.Unlink(); objectCount--; return(true); } lo = lo.pNext; } return(false); }
public void Unlink() { if (pPrev != null) { pPrev.pNext = pNext; } if (pNext != null) { pNext.pPrev = pPrev; } pNext = null; pPrev = null; _object = default; }
// Find and return the value if present in list, otherwise default (null) value. public T Find(T lookFor) { LinkedObject <T> lo = pFirst; while (lo != null) { if (lo._object.Equals(lookFor)) { return(lo._object); } lo = lo.pNext; } // not in list, so return 'default'. (normally null) return(default);
public void Add(T obj) { LinkedObject <T> lobj = new LinkedObject <T>(obj); if (pFirst == null) { // first time, list was empty. pFirst = lobj; pLast = lobj; } else { // add last pLast.pNext = lobj; lobj.pPrev = pLast; pLast = lobj; } objectCount++; }