Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UnidirList
- {
- public UnidirPoint head;
- public UnidirList()
- {
- head = null;
- }
- private void makeRandomList()
- {
- Console.Clear();
- Console.WriteLine("Введите размер однонаправленного списка:");
- int size = Program.scanNatNumber();
- Random rand = new Random();
- head = new UnidirPoint(rand.Next(-100, 101));
- UnidirPoint curPoint = head;
- for (int i = 1; i < size; i++)
- {
- System.Threading.Thread.Sleep(10);
- UnidirPoint newPoint = new UnidirPoint(rand.Next(-100, 101));
- curPoint.next = newPoint;
- curPoint = newPoint;
- }
- }
- private void makeOwnList()
- {
- Console.Clear();
- Console.WriteLine("Введите размер однонаправленного списка:");
- int size = Program.scanNatNumber();
- Console.WriteLine("Введите голову списка:");
- head = new UnidirPoint(Program.scanNumber());
- UnidirPoint curPoint = head;
- if (size == 1)
- {
- return;
- }
- Console.WriteLine("Вводите элементы списка по очереди через Enter:");
- for (int i = 1; i < size; i++)
- {
- UnidirPoint newPoint = new UnidirPoint(Program.scanNumber());
- curPoint.next = newPoint;
- curPoint = newPoint;
- }
- }
- public void makeList()
- {
- Console.WriteLine(@"Как вы хотите создать однонаправленный список:
- 1. Вручную.
- 2. С помощью датчика случайных чисел.");
- while (true)
- {
- switch (Program.scanNumber())
- {
- case 1:
- makeOwnList();
- return;
- case 2:
- makeRandomList();
- return;
- default:
- Console.WriteLine("Введена некорректная команда, повторите ввод!");
- break;
- }
- }
- }
- private UnidirPoint findFirstEven(UnidirPoint cur)
- {
- if (cur.next == null && Math.Abs(cur.data % 2) == 1)
- {
- return null;
- }
- if (cur.next.data % 2 == 0)
- {
- return cur;
- }
- return findFirstEven(cur.next);
- }
- public void deleteEvenElements()
- {
- if (head == null)
- {
- return;
- }
- if (head.data % 2 == 0)
- {
- head = head.next;
- deleteEvenElements();
- return;
- }
- UnidirPoint found = findFirstEven(head);
- if (found == null)
- {
- return;
- }
- found.next = found.next.next;
- deleteEvenElements();
- }
- public void print(UnidirPoint cur)
- {
- Console.Write(cur);
- if (cur.next == null)
- {
- Console.Write("\n");
- return;
- }
- print(cur.next);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement