Exemple #1
0
        // определение первого отрицательного элемента в списке
        static void FirstNeg(ref UnidirectionalList beg, ref UnidirectionalList begNeg)
        {
            UnidirectionalList p = beg;

            while (p != null)
            {
                if (p.data < 0)
                {
                    begNeg = MakePoint(p.data);
                    beg    = DelElement(beg, p.data);
                    break;
                }
                p = p.next;//переход к следующему элементу
            }
        }
Exemple #2
0
        //формирование списка из n элементов путем добавления элементов в конец списка с помощью ДСЧ
        public static UnidirectionalList MakeListToEndRandom(int size) //добавление в конец
        {
            int info = rnd.Next(MININT_VALUE, MAXINT_VALUE);
            UnidirectionalList beg = MakePoint(info);
            UnidirectionalList r   = beg;

            for (int i = 1; i < size; i++)
            {
                info = rnd.Next(MININT_VALUE, MAXINT_VALUE);
                UnidirectionalList p = MakePoint(info);
                r.next = p;
                r      = p;
            }
            return(beg);
        }
Exemple #3
0
        //формирование списка из n элементов путем добавления элементов в конец списка с клавиатуры
        public static UnidirectionalList MakeListToEndHand(int size) //добавление в конец
        {
            int info = AskData.ReadIntNumber("Введите 1 элемент: ", MININT_VALUE, MAXINT_VALUE);
            UnidirectionalList beg = MakePoint(info);
            UnidirectionalList r   = beg;

            for (int i = 2; i <= size; i++)
            {
                Console.Write("Введите {0} элемент:", i);
                info = AskData.ReadIntNumber("", MININT_VALUE, MAXINT_VALUE);
                UnidirectionalList p = MakePoint(info);
                r.next = p;
                r      = p;
            }
            return(beg);
        }
Exemple #4
0
        public static UnidirectionalList MakeList(ref int size) //для формирования списка двумя способами
        {
            int checkMakeUnidirectionalList = 0;
            UnidirectionalList beg          = null;

            PrintForm();
            checkMakeUnidirectionalList = AskData.ReadIntNumber("", 1, 3);
            switch (checkMakeUnidirectionalList)
            {
            case 1: beg = MakeListToEndHand(size); Console.WriteLine("Однонаправленный список сформирован"); break;

            case 2: beg = MakeListToEndRandom(size); Console.WriteLine("Однонаправленный список сформирован"); break;

            case 3: size = 0; Console.WriteLine("Однонаправленный список не сформирован!"); break;
            }
            return(beg);
        }
Exemple #5
0
        // печать элементов списка
        public static void ShowList(UnidirectionalList beg)
        {
            //проверка наличия элементов в списке
            if (beg == null)
            {
                Console.WriteLine("Список пуст!");
                return;
            }
            UnidirectionalList p = beg;

            while (p != null)
            {
                Console.Write(p);
                p = p.next;//переход к следующему элементу
            }
            Console.WriteLine();
        }
Exemple #6
0
        static UnidirectionalList DelElement(UnidirectionalList beg, int key)
        {
            if (beg.data == key)//удаляем первый элемент
            {
                beg = beg.next;
                return(beg);
            }
            UnidirectionalList p = beg;

            //ищем элемент для удаления и встаем на предыдущий
            for (int i = 1; p.next.data != key && p != null; i++)
            {
                p = p.next;
            }
            //исключаем элемент из списка
            p.next = p.next.next;
            return(beg);
        }
Exemple #7
0
        // формирование списков: с отриццательными значениями, с положительными значениями
        public static UnidirectionalList FormPosAndNegList(UnidirectionalList beg, ref UnidirectionalList begPos, ref UnidirectionalList begNeg)
        {
            //проверка наличия элементов в списке
            if (beg == null)
            {
                Console.WriteLine("Список пуст!");
                return(beg);
            }

            FirstPos(ref beg, ref begPos);
            FirstNeg(ref beg, ref begNeg);

            UnidirectionalList pos = begPos;
            UnidirectionalList neg = begNeg;
            UnidirectionalList p   = beg;

            while (p != null)
            {
                if (p.data > 0)
                {
                    UnidirectionalList elemPos = MakePoint(p.data);
                    pos.next = elemPos;
                    pos      = elemPos;
                    beg      = DelElement(beg, p.data);
                }
                if (p.data < 0)
                {
                    UnidirectionalList elemNeg = MakePoint(p.data);
                    neg.next = elemNeg;
                    neg      = elemNeg;
                    beg      = DelElement(beg, p.data);
                }
                p = p.next;//переход к следующему элементу
            }
            return(beg);
        }
Exemple #8
0
        static void Run()//работа с однонаправленными списками
        {
            int checkRun1 = 0, left = 1, right = 3;
            int size               = 0;
            UnidirectionalList beg = null;

            do
            {
                PrintMenu();
                checkRun1 = AskData.ReadIntNumber("Введите номер пункта, который хотите выполнить", left, right);
                switch (checkRun1)
                {
                case 1:     //создать список
                {
                    size = AskData.ReadIntNumber("Введите количество элементов списка:", MIN_SIZE, MAX_SIZE);
                    beg  = UnidirectionalList.MakeList(ref size);
                    UnidirectionalList.ShowList(beg);
                    break;
                }

                case 2:     //pos и neg списки
                {
                    UnidirectionalList begPos = null;
                    UnidirectionalList begNeg = null;
                    beg = UnidirectionalList.FormPosAndNegList(beg, ref begPos, ref begNeg);
                    Console.WriteLine("Главный список:");
                    UnidirectionalList.ShowList(beg);
                    Console.WriteLine("Список, состоящий из положительных элементов:");
                    UnidirectionalList.ShowList(begPos);
                    Console.WriteLine("Список, состоящий из отрицательных элементов:");
                    UnidirectionalList.ShowList(begNeg);
                    break;
                }
                }
            } while (checkRun1 != right);
        }
Exemple #9
0
        //создание элемента списка
        static UnidirectionalList MakePoint(int d)
        {
            UnidirectionalList p = new UnidirectionalList(d);

            return(p);
        }
Exemple #10
0
 public UnidirectionalList(int d)//конструктор с параметрами
 {
     data = d;
     next = null;
 }
Exemple #11
0
 public UnidirectionalList next; //адресное поле
 public UnidirectionalList()     //конструктор без параметров
 {
     data = 0;
     next = null;
 }