Beispiel #1
0
        private static LinkedList <AddEquation> sorted_insert(LinkedList <AddEquation> list, List <AddEquation> calculated, AddEquation to_insert)
        {
            if (to_insert.node_point.compare_to(0) < 0)
            {
                return(list);
            }
            if (list.Count == 0)
            {
                list.AddFirst(to_insert);
                calculated.Add(to_insert);
            }
            else
            {
                for (int i = 0; i < calculated.Count; i++)
                {
                    if (to_insert.same_as(calculated[i]))
                    {
                        return(list);
                    }
                }
                ////本段用于测试深度优先搜索

                //list.AddFirst(to_insert);
                //calculated.Add(to_insert);
                //return list;


                LinkedListNode <AddEquation> now = list.First;
                bool inserted = false;
                for (int i = 0; i < list.Count; i++)
                {
                    if (to_insert.node_point.compare_to(now.Value.node_point) < 0)
                    {
                        list.AddBefore(now, to_insert);
                        calculated.Add(to_insert);
                        inserted = true;
                        break;
                    }
                    now = now.Next;
                }
                if (!inserted)
                {
                    list.AddLast(to_insert);
                    calculated.Add(to_insert);
                }
            }
            return(list);
        }