Exemplo n.º 1
0
        public void Add(T data)
        {
            RefItem <T> item = new RefItem <T>(data);

            innerList.Add(item);
            isSorted = false;
        }
Exemplo n.º 2
0
        public void Delete(RefItem <T> refItem)
        {
            //delete specfic node

            if (isSorted)
            {
                //use binary search to find node
                //1. find middle point
                int removeAt = refItem.NodeNumber;
                for (int i = innerList.Count - 1; i > removeAt; --i)
                {
                    innerList[i].NodeNumber = i - 1;
                }
                innerList.RemoveAt(removeAt);
            }
            else
            {
                for (int i = innerList.Count - 1; i >= 0; --i)
                {
                    if (innerList[i] == refItem)
                    {
                        this.innerList.RemoveAt(i);
                        break;
                    }
                }
            }
            //----------------------------------------------
            //delete that item
        }
Exemplo n.º 3
0
        int BinSearch(RefItem <T> refItem, int begin, int end)
        {
            int         pos    = begin + ((end - begin) / 2);
            RefItem <T> sample = innerList[pos];

            if (refItem == sample)
            {
            }
            else
            {
                if (sample.Data.CompareTo(refItem.Data) <= 0)
                {
                    //search down
                    end = end - ((pos - begin) / 2);
                    if (end == begin)
                    {
                        return(-1);
                    }
                    return(BinSearch(refItem, begin, end));
                }
                else
                {
                    //search up
                    begin = pos + (end - pos) / 2;
                    if (end == begin)
                    {
                        return(-1);
                    }
                    return(BinSearch(refItem, begin, end));
                }
            }

            return(-1);//not found
        }
Exemplo n.º 4
0
        public void Add(out RefItem <T> refItem, T data)
        {
            RefItem <T> item = new RefItem <T>(data);

            innerList.Add(item);
            isSorted = false;
            refItem  = item;
        }
Exemplo n.º 5
0
 static int MaxFirstSort(RefItem <T> t1, RefItem <T> t2)
 {
     return(t2.Data.CompareTo(t1.Data));
 }