Циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке - C#
Формулировка задачи:
Помогите организовать циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке. см. ниже вместо <<<<<<<<<<<<<<<< код >>>>>>>>>>>>> (нужно только поменять маленько)
В данный момент тут организован циклический однонаправленный линейный список с функцией вставки элемента в список справа от условно последнего элемента.
Спасибо!!!
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApplication2
- {
- class Program
- {
- class ListElem // класс элемент списка
- {
- public int Value; // поле данных
- public ListElem Next; // поле - переход на след. элемент
- public ListElem(ListElem next, int value) // конструктор класса
- {
- Next = next; // заполнение поля
- Value = value; // заполнение поля
- }
- }
- class List // класс список
- {
- int value,count=0;
- public ListElem head = null; // заголовок списка
- public ListElem current = null; // текущий элемент списка
- public List() { } // пустой конструктор
- public void Menu() // вставка элемента в начало списка
- {
- Console.Clear();
- Console.WriteLine("Главное меню:\n");
- Console.WriteLine(" 1. Заполнить список.");
- Console.WriteLine(" 2. Просмотреть список.");
- Console.WriteLine(" 3. Индивидуальное задание(вариант 20).");
- Console.WriteLine(" 4. Удалить элемент.");
- Console.WriteLine(" 5. Очистить список.");
- Console.WriteLine(" 6. Выход.\n");
- Console.WriteLine("\nВЫБЕРИТЕ НОМЕР НУЖНОГО ЗАДАНИЯ!\n");
- }
- public void FirstElem() // вставка элемента в начало списка
- {
- Console.Clear();
- int n = 10;
- Console.WriteLine("Введите " + n + " элементов.\n");
- for (int i = 0; i < n; i++)
- {
- value = int.Parse(Console.ReadLine());
- ListElem temp = new ListElem(null, value); // создание нового элемента списка и заполнение его значениями
- if (head == null) // если список пуст
- head = temp; // новый элемент становится первым
- else
- {
- temp.Next = head; // добавление в новый элемент ссылки на первый элемент
- head = temp; // перезапись первого элемента
- }
- }
- current = head;
- while (current.Next != null)
- current = current.Next;
- current.Next = head;
- count+=10;
- }
- public void Show() // метод просмотра списка
- {
- Console.Clear();
- Console.Write("Циклический однонаправленный список: ");
- if (count==0) // если список пуст
- Console.WriteLine("список пуст!");
- else
- {
- int counter1 = 0;
- ListElem temp = head; // создание нового элемента и запись в него первого
- while (counter1<count) // цикл до конца списка
- {
- Console.Write(temp.Value + " "); // вывод на экран текущего значения
- temp = temp.Next; // переход к след. элементу
- counter1++;
- }
- Console.WriteLine("");
- }
- }
- public void Right_Element()//вставка справа от текущего
- {
- Console.Clear();
- if (head == null)
- {
- Console.WriteLine("Заполните список!");
- }
- else
- {
- int m = count;
- current = head;
- for (int i = 1; i < m; i++)
- current = current.Next; // переход к след. элементу;
- Console.WriteLine("Введите число: ");
- value = int.Parse(Console.ReadLine());
- ListElem temp = new ListElem(null, value);
- temp.Next = current.Next;
- current.Next = temp;
- current = temp;
- count++;
- }
- }
- public void Delete_Elements()//удаление элемента
- {
- Console.Clear();
- if (head != null)
- {
- Show();
- ListElem temp = head;
- ListElem prev = head;
- int i = 1;
- Console.WriteLine("Введите позицию в списке (число): ");
- int pos = int.Parse(Console.ReadLine());
- while (pos != i)
- {
- prev = temp;
- temp = temp.Next;
- i++;
- }
- if (head == temp)
- head = head.Next;
- else
- prev.Next = temp.Next;
- count--;
- }
- else
- Console.WriteLine("Список и так пустой! Удалять нечего.");
- }
- public void Clear_list()//метод очистки списка
- {
- ListElem temp; int i = 0;
- while (i<count)
- {
- temp = head.Next;
- head = temp;
- count--;
- }
- }
- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- public void Variant_20()//
- {
- Console.Clear();
- Console.WriteLine("20. Организовать однонаправленный линейный список с функцией вывода на экран элементов меньших первого элемента.\n");
- ListElem temp = head.Next;
- // ListElem prev = head;
- if (head != null)
- {
- bool flag = false;
- while (temp != null)
- {
- if (temp.Value < head.Value)
- { Console.Write(temp.Value.ToString() + " "); flag = true; }
- temp = temp.Next;
- }
- if (flag == false) Console.Write("Элементов, меньше первого, нет в списке");
- }
- else
- Console.WriteLine("Список пуст!");
- }>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- }
- static void Main(string[] args)
- {
- List List = new List();
- List.Menu();
- int c = int.Parse(Console.ReadLine());
- while (c != 8)
- {
- switch (c)
- {
- case 1: List.FirstElem(); break;//заполнить список
- case 2: List.Show(); break;//просмотреть список
- case 3: List.Right_Element(); break;//добавить новый элемент
- case 4: List.Delete_Elements(); break;//удалить элемент
- case 5: List.Clear_list(); break;//очистить список
- case 6: break;//выход
- default: Console.Write("Команды с таким номером нет!"); break;
- }
- do Console.Write("\nДля продолжения нажмите клавишу Enter....");
- while (Console.ReadKey().Key != ConsoleKey.Enter);
- List.Menu();
- c = int.Parse(Console.ReadLine());
- }
- }
Решение задачи: «Циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApplication2
- {
- class Program
- {
- class ListElem // класс элемент списка
- {
- public int Value; // поле данных
- public ListElem Next; // поле - переход на след. элемент
- public ListElem(ListElem next, int value) // конструктор класса
- {
- Next = next; // заполнение поля
- Value = value; // заполнение поля
- }
- }
- class List // класс список
- {
- int value;
- public ListElem head = null; // заголовок списка
- public ListElem current = null; // текущий элемент списка
- public List() { } // пустой конструктор
- public void Menu() // вставка элемента в начало списка
- {
- Console.Clear();
- Console.WriteLine("Главное меню:\n");
- Console.WriteLine(" 1. Заполнить список.");
- Console.WriteLine(" 2. Просмотреть список.");
- Console.WriteLine(" 3. Добавить новый элемент.");
- Console.WriteLine(" 4. Поиск элемента.");
- Console.WriteLine(" 5. Удалить элемент.");
- Console.WriteLine(" 6. Очистить список.");
- Console.WriteLine(" 7. Индивидуальное задание(вариант 12).");
- Console.WriteLine(" 8. Выход.\n");
- Console.WriteLine("\nВЫБЕРИТЕ НОМЕР НУЖНОГО ЗАДАНИЯ!\n");
- }
- public void FirstElem() // вставка элемента в начало списка
- {
- Console.Clear();
- Console.Write("Сколько элементов Вы хотите ввести? ");
- int n = int.Parse(Console.ReadLine());
- Console.WriteLine("Введите " + n + " элементов.\n");
- for (int i = 0; i < n; i++)
- {
- value = int.Parse(Console.ReadLine());
- ListElem temp = new ListElem(null, value); // создание нового элемента списка и заполнение его значениями
- if (head == null) // если список пуст
- head = temp; // новый элемент становится первым
- else
- {
- temp.Next = head; // добавление в новый элемент ссылки на первый элемент
- head = temp; // перезапись первого элемента
- }
- }
- }
- public void Show() // метод просмотра списка
- {
- Console.Clear();
- Console.Write("Однонаправленный список: ");
- if (head == null) // если список пуст
- Console.WriteLine("список пуст!");
- else
- {
- ListElem temp = head; // создание нового элемента и запись в него первого
- while (temp != null) // цикл до конца списка
- {
- Console.Write(temp.Value + " "); // вывод на экран текущего значения
- temp = temp.Next; // переход к след. элементу
- }
- Console.WriteLine("");
- }
- }
- public void FindElem() // метод поиска элемента по значению
- {
- Console.WriteLine("Введите элемент для поиска: ");
- value = int.Parse(Console.ReadLine());
- ListElem temp = head; // запись первого элемента в новый
- Console.WriteLine("Результаты поиска: ");
- while (temp != null) // цикл пока не дошли до конца списка
- {
- if (temp.Value == value) // если элемент найден
- Console.Write(temp.Value); // вернуть найденный элемент
- temp = temp.Next; // переход к след. элементу
- }
- }
- public void Right_Element()//вставка справа от текущего
- {
- Console.Clear();
- if (head == null)
- {
- Console.WriteLine("Заполните список!");
- }
- else
- {
- Console.WriteLine("После какого элемента вставить новый? ");
- int m = int.Parse(Console.ReadLine());
- current = head;
- for (int i = 1; i < m; i++)
- current = current.Next; // переход к след. элементу;
- Console.WriteLine("Введите число: ");
- value = int.Parse(Console.ReadLine());
- ListElem temp = new ListElem(null, value);
- temp.Next = current.Next;
- current.Next = temp;
- current = temp;
- }
- }
- public void Delete_Elements()//удаление элемента
- {
- Console.Clear();
- if (head != null)
- {
- Show();
- ListElem temp = head;
- ListElem prev = head;
- int i = 1;
- Console.WriteLine("Введите позицию в списке (число): ");
- int pos = int.Parse(Console.ReadLine());
- while (pos != i)
- {
- prev = temp;
- temp = temp.Next;
- i++;
- }
- if (head == temp)
- head = head.Next;
- else
- prev.Next = temp.Next;
- }
- else
- Console.WriteLine("Список и так пустой! Удалять нечего.");
- }
- public void Clear_list()//метод очистки списка
- {
- ListElem temp;
- while (head != null)
- {
- temp = head.Next;
- head = temp;
- }
- }
- public void Variant_20()//индивидуальное задание
- {
- Console.Clear();
- Console.WriteLine("12. Организовать однонаправленный линейный список с функцией вывода на экран отрицательных элементов.\n");
- ListElem temp = head.Next;
- // ListElem prev = head;
- if (head != null)
- {
- bool flag = false;
- while (temp != null)
- {
- if (temp.Value < 0)
- { Console.Write(temp.Value.ToString() + " "); flag = true; }
- temp = temp.Next;
- }
- if (flag == false) Console.Write("отрицательних Элементов, нет в списке");
- }
- else
- Console.WriteLine("Список пуст!");
- }
- }
- static void Main(string[] args)
- {
- List List = new List();
- List.Menu();
- int c = int.Parse(Console.ReadLine());
- while (c != 8)
- {
- switch (c)
- {
- case 1: List.FirstElem(); break;//заполнить список
- case 2: List.Show(); break;//просмотреть список
- case 3: List.Right_Element(); break;//добавить новый элемент
- case 4: List.FindElem(); break;//поиск элемента
- case 5: List.Delete_Elements(); break;//удалить элемент
- case 6: List.Clear_list(); break;//очистить список
- case 7: List.Variant_12(); break;//индивидуальное задание (12 вариант)
- case 8: break;//выход
- default: Console.Write("Команды с таким номером нет!"); break;
- }
- do Console.Write("\nДля продолжения нажмите клавишу Enter....");
- while (Console.ReadKey().Key != ConsoleKey.Enter);
- List.Menu();
- c = int.Parse(Console.ReadLine());
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д