예제 #1
0
        public static OList Add(OList list, int n, MyClassLibrary10.Employee G) // Добавление элемента на позицию n
        {
            if (list == null)
            {
                Console.WriteLine("Список пустой");
                return(null);
            }
            else
            {
                if (list.count < n)
                {
                    Console.WriteLine("Выход за пределы списка");
                    return(null);
                }
                else
                {
                    if (n == 1)
                    {
                        OList LinksAfterN = list;
                        list = new OList {
                            data = G, next = LinksAfterN
                        };
                        list.count += 1;
                        return(list);
                        //OList ListTmp = list;
                        //ListTmp.data = G;
                    }
                    else if (n == list.count)
                    {
                        OList ListTmp = list;
                        for (int i = 1; i < n; i++)
                        {
                            ListTmp = ListTmp.next;
                        }
                        ListTmp.next = new OList {
                            data = G, next = null
                        };
                        return(list = ListTmp);
                    }
                    else
                    {
                        OList ListTmp     = list; // Для запоминания n-го элемента
                        OList LinksAfterN = list; // Для запоминания связей после n-го элемента

                        for (int i = 0; i < n - 1; i++)
                        {
                            ListTmp     = ListTmp.next; // Присваиваем ссылку на следующий элемент
                            LinksAfterN = ListTmp.next; // Присваиваем ссылку на элемент, который нужно запомнить
                        }

                        ListTmp.next = new OList {
                            data = G, next = LinksAfterN
                        };
                        list.count += 1;
                        return(list = ListTmp);
                    }
                }
            }
        }
예제 #2
0
        public static OList AddBeginningLIST(int l) // Добовление в начало однонаправленного списка
        {
            OList beg = new OList();                //начало списка

            beg.data = MakeNew();                   //созднание нового элемента
            for (int i = 1; i < l; i++)
            {
                //Console.WriteLine(beg.data.ToString());//это мне для проверки
                MyClassLibrary10.Employee tmp = new MyClassLibrary10.Employee(); // Данные для OList
                OList element = new OList();                                     // Новый узел
                element.data = tmp;                                              // Заполняем data нового узла
                element.next = beg;                                              // ссылаемся на предыдущий узел
                beg          = element;                                          // Присваиваем предыдущему узлу ссылку на текущий
            }
            beg.count = l;
            return(beg);
        }
예제 #3
0
 public static MyClassLibrary10.Employee MakeNew()
 {
     MyClassLibrary10.Employee Employee = new MyClassLibrary10.Employee();
     return(Employee);
 }
예제 #4
0
 public OList()
 {
     data  = null;
     next  = null;
     count = 0;
 }