Ejemplo n.º 1
0
        // Метод для поиска элемента по значению
        public int IndexOf(Place place)
        {
            int  index = 0;
            bool check = false;

            PointOne point = (PointOne)this.Clone();

            while (point.next != null && !check)
            {
                if (point.data == place)
                {
                    check = true;
                }

                index++;
                point = point.next;
            }

            if (!check)
            {
                return(-1);
            }

            return(index);
        }
Ejemplo n.º 2
0
        // Удаление элемента из одноправленного списка
        public static PointOne RemovePoint(PointOne beg, int number)
        {
            if (beg == null) // Пустой список
            {
                Console.WriteLine("Error! The List is empty");
                return(null);
            }

            if (number == 1) // Удаляем первый элемент
            {
                beg = beg.next;
                return(beg);
            }

            PointOne p = beg;

            // Ищем элемент для удаления и встаем на предыдущий
            for (int i = 1; i < number - 1 && p != null; i++)
            {
                p = p.next;
            }

            if (p == null) // Если элемент не найден
            {
                Console.WriteLine("Error! The size of List less than Number");
                return(beg);
            }

            // исключаем элемент из списка
            p.next = p.next.next;
            return(p);
        }
Ejemplo n.º 3
0
        // Печать одноправленного списка
        public static void ShowList(PointOne beg)
        {
            //проверка наличия элементов в списке
            if (beg == null)
            {
                Console.WriteLine("The List is empty");
                return;
            }
            PointOne p = beg;

            while (p != null)
            {
                Console.Write(p.ToString());
                p = p.next;//переход к следующему элементу
            }
            Console.WriteLine();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Часть 1");

            Console.WriteLine("Работа с одноправленным списоком");
            PointOne one = new PointOne();

            one = PointOne.MakeList(10);
            Console.WriteLine("Одноправленный список");
            PointOne.ShowList(one);
            Console.WriteLine("Добавление в конец");
            one = PointOne.MakeListToEnd(7);
            Console.WriteLine("Одноправленный список");
            PointOne.ShowList(one);

            Console.WriteLine();

            Console.WriteLine("Работа с двунаправленным списоком");
            PointTwo two = new PointTwo();

            two = PointTwo.MakeList(10);
            Console.WriteLine("Двунаправленный список");
            PointTwo.ShowList(two);
            Console.WriteLine("Удаление четных элементов");
            two = PointTwo.RemoveEvenElems(two);
            Console.WriteLine("Двунаправленный список");
            PointTwo.ShowList(two);

            Console.WriteLine();

            Console.WriteLine("Работа с деревоом");
            PointTree tree = new PointTree();

            Console.WriteLine("Создание сбалансированного дерева");
            tree = PointTree.IdealTree(10, tree);
            Console.WriteLine("Дерево");
            PointTree.ShowTree(tree, 200);
        }
Ejemplo n.º 5
0
 // Конструктор класса c параметрами
 public PointOne(Place place)
 {
     position = 0;
     data     = place;
     next     = null;
 }
Ejemplo n.º 6
0
 // Конструктор класса без параметров
 public PointOne()
 {
     data = null;
     next = null;
 }
Ejemplo n.º 7
0
        // Добавление элемента в одноправленный список
        public static PointOne AddPoint(PointOne beg, int number)
        {
            int      typeclass = random.Next(1, 4);
            PointOne point     = new PointOne();

            switch (typeclass)
            {
            case 1:
            {
                Place place = new Place();
                place.RandomCreate();
                Console.WriteLine("The element {0} is adding...", place.ToString());
                point = MakePoint(place);
            }
            break;

            case 2:
            {
                Region region = new Region();
                region.RandomCreate();
                Console.WriteLine("The element {0} is adding...", region.ToString());
                point = MakePoint(region);
            }
            break;

            case 3:
            {
                City city = new City();
                city.RandomCreate();
                Console.WriteLine("The element {0} is adding...", city.ToString());
                point = MakePoint(city);
            }
            break;

            case 4:
            {
                Megapolis megapolis = new Megapolis();
                megapolis.RandomCreate();
                Console.WriteLine("The element {0} is adding...", megapolis.ToString());
                point = MakePoint(megapolis);
            }
            break;
            }

            if (beg == null)
            {
                switch (typeclass)
                {
                case 1:
                {
                    Place place = new Place();
                    place.RandomCreate();
                    beg = MakePoint(place);
                }
                break;

                case 2:
                {
                    Region region = new Region();
                    region.RandomCreate();
                    beg = MakePoint(region);
                }
                break;

                case 3:
                {
                    City city = new City();
                    city.RandomCreate();
                    beg = MakePoint(city);
                }
                break;

                case 4:
                {
                    Megapolis megapolis = new Megapolis();
                    megapolis.RandomCreate();
                    beg = MakePoint(megapolis);
                }
                break;
                }

                return(beg);
            }

            if (number == 1)
            {
                point.next = beg;
                beg        = point;
                return(beg);
            }

            // Вспом. переменная для прохода по списку
            PointOne p = beg;

            // Идем по списку до нужного элемента
            for (int i = 1; i < number - 1 && p != null; i++)
            {
                p = p.next;
            }

            if (p == null) //элемент не найден
            {
                Console.WriteLine("Error! The size of List less than Number");
                return(beg);
            }

            // Lобавляем новый элемент
            point.next = p.next;
            p.next     = point;
            return(beg);
        }
Ejemplo n.º 8
0
        // Добавление в конец однонаправленного списка
        public static PointOne MakeListToEnd(int size)
        {
            int      typeclass = random.Next(1, 4);
            PointOne beg       = new PointOne();

            switch (typeclass)
            {
            case 1:
            {
                Place place = new Place();
                place.RandomCreate();
                Console.WriteLine("The element {0} is adding...", place.ToString());
                beg = MakePoint(place);
            }
            break;

            case 2:
            {
                Region region = new Region();
                region.RandomCreate();
                Console.WriteLine("The element {0} is adding...", region.ToString());
                beg = MakePoint(region);
            }
            break;

            case 3:
            {
                City city = new City();
                city.RandomCreate();
                Console.WriteLine("The element {0} is adding...", city.ToString());
                beg = MakePoint(city);
            }
            break;

            case 4:
            {
                Megapolis megapolis = new Megapolis();
                megapolis.RandomCreate();
                Console.WriteLine("The element {0} is adding...", megapolis.ToString());
                beg = MakePoint(megapolis);
            }
            break;
            }

            PointOne r = beg;

            for (int i = 1; i < size; i++)
            {
                typeclass = random.Next(1, 4);
                PointOne point = new PointOne();

                switch (typeclass)
                {
                case 1:
                {
                    Place place = new Place();
                    place.RandomCreate();
                    Console.WriteLine("The element {0} is adding...", place.ToString());
                    point = MakePoint(place);
                }
                break;

                case 2:
                {
                    Region region = new Region();
                    region.RandomCreate();
                    Console.WriteLine("The element {0} is adding...", region.ToString());
                    point = MakePoint(region);
                }
                break;

                case 3:
                {
                    City city = new City();
                    city.RandomCreate();
                    Console.WriteLine("The element {0} is adding...", city.ToString());
                    point = MakePoint(city);
                }
                break;

                case 4:
                {
                    Megapolis megapolis = new Megapolis();
                    megapolis.RandomCreate();
                    Console.WriteLine("The element {0} is adding...", megapolis.ToString());
                    point = MakePoint(megapolis);
                }
                break;
                }

                r.next = point;
                r      = point;
            }
            return(beg);
        }
Ejemplo n.º 9
0
        // Создание элемента одноправленного списка
        public static PointOne MakePoint(Place place)
        {
            PointOne point = new PointOne(place);

            return(point);
        }
Ejemplo n.º 10
0
 // Полное удаление коллекции
 public void Clear()
 {
     data = null;
     next = null;
 }