コード例 #1
0
ファイル: LinkedList.cs プロジェクト: Snorvarg/LinkedList
        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);
        }
コード例 #2
0
ファイル: LinkedList.cs プロジェクト: Snorvarg/LinkedList
        public void Unlink()
        {
            if (pPrev != null)
            {
                pPrev.pNext = pNext;
            }
            if (pNext != null)
            {
                pNext.pPrev = pPrev;
            }

            pNext   = null;
            pPrev   = null;
            _object = default;
        }
コード例 #3
0
ファイル: LinkedList.cs プロジェクト: Snorvarg/LinkedList
        // 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);
コード例 #4
0
ファイル: LinkedList.cs プロジェクト: Snorvarg/LinkedList
        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++;
        }