Циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке - 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()); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д