Циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке - C#

Узнай цену своей работы

Формулировка задачи:

Помогите организовать циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке. см. ниже вместо <<<<<<<<<<<<<<<< код >>>>>>>>>>>>> (нужно только поменять маленько) В данный момент тут организован циклический однонаправленный линейный список с функцией вставки элемента в список справа от условно последнего элемента. Спасибо!!!
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication2
  6. {
  7. class Program
  8. {
  9. class ListElem // класс элемент списка
  10. {
  11. public int Value; // поле данных
  12. public ListElem Next; // поле - переход на след. элемент
  13. public ListElem(ListElem next, int value) // конструктор класса
  14. {
  15. Next = next; // заполнение поля
  16. Value = value; // заполнение поля
  17. }
  18. }
  19. class List // класс список
  20. {
  21. int value,count=0;
  22. public ListElem head = null; // заголовок списка
  23. public ListElem current = null; // текущий элемент списка
  24. public List() { } // пустой конструктор
  25. public void Menu() // вставка элемента в начало списка
  26. {
  27. Console.Clear();
  28. Console.WriteLine("Главное меню:\n");
  29. Console.WriteLine(" 1. Заполнить список.");
  30. Console.WriteLine(" 2. Просмотреть список.");
  31. Console.WriteLine(" 3. Индивидуальное задание(вариант 20).");
  32. Console.WriteLine(" 4. Удалить элемент.");
  33. Console.WriteLine(" 5. Очистить список.");
  34. Console.WriteLine(" 6. Выход.\n");
  35. Console.WriteLine("\nВЫБЕРИТЕ НОМЕР НУЖНОГО ЗАДАНИЯ!\n");
  36. }
  37. public void FirstElem() // вставка элемента в начало списка
  38. {
  39. Console.Clear();
  40. int n = 10;
  41. Console.WriteLine("Введите " + n + " элементов.\n");
  42. for (int i = 0; i < n; i++)
  43. {
  44. value = int.Parse(Console.ReadLine());
  45. ListElem temp = new ListElem(null, value); // создание нового элемента списка и заполнение его значениями
  46. if (head == null) // если список пуст
  47. head = temp; // новый элемент становится первым
  48. else
  49. {
  50. temp.Next = head; // добавление в новый элемент ссылки на первый элемент
  51. head = temp; // перезапись первого элемента
  52. }
  53. }
  54. current = head;
  55. while (current.Next != null)
  56. current = current.Next;
  57. current.Next = head;
  58. count+=10;
  59. }
  60. public void Show() // метод просмотра списка
  61. {
  62. Console.Clear();
  63. Console.Write("Циклический однонаправленный список: ");
  64. if (count==0) // если список пуст
  65. Console.WriteLine("список пуст!");
  66. else
  67. {
  68. int counter1 = 0;
  69. ListElem temp = head; // создание нового элемента и запись в него первого
  70. while (counter1<count) // цикл до конца списка
  71. {
  72. Console.Write(temp.Value + " "); // вывод на экран текущего значения
  73. temp = temp.Next; // переход к след. элементу
  74. counter1++;
  75. }
  76. Console.WriteLine("");
  77. }
  78. }
  79.  
  80. public void Right_Element()//вставка справа от текущего
  81. {
  82. Console.Clear();
  83. if (head == null)
  84. {
  85. Console.WriteLine("Заполните список!");
  86. }
  87. else
  88. {
  89. int m = count;
  90. current = head;
  91. for (int i = 1; i < m; i++)
  92. current = current.Next; // переход к след. элементу;
  93. Console.WriteLine("Введите число: ");
  94. value = int.Parse(Console.ReadLine());
  95. ListElem temp = new ListElem(null, value);
  96. temp.Next = current.Next;
  97. current.Next = temp;
  98. current = temp;
  99. count++;
  100. }
  101. }
  102. public void Delete_Elements()//удаление элемента
  103. {
  104. Console.Clear();
  105. if (head != null)
  106. {
  107. Show();
  108. ListElem temp = head;
  109. ListElem prev = head;
  110. int i = 1;
  111. Console.WriteLine("Введите позицию в списке (число): ");
  112. int pos = int.Parse(Console.ReadLine());
  113. while (pos != i)
  114. {
  115. prev = temp;
  116. temp = temp.Next;
  117. i++;
  118. }
  119. if (head == temp)
  120. head = head.Next;
  121. else
  122. prev.Next = temp.Next;
  123. count--;
  124. }
  125. else
  126. Console.WriteLine("Список и так пустой! Удалять нечего.");
  127. }
  128. public void Clear_list()//метод очистки списка
  129. {
  130. ListElem temp; int i = 0;
  131. while (i<count)
  132. {
  133. temp = head.Next;
  134. head = temp;
  135. count--;
  136. }
  137. }
  138. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  139. public void Variant_20()//
  140. {
  141. Console.Clear();
  142. Console.WriteLine("20. Организовать однонаправленный линейный список с функцией вывода на экран элементов меньших первого элемента.\n");
  143. ListElem temp = head.Next;
  144. // ListElem prev = head;
  145. if (head != null)
  146. {
  147. bool flag = false;
  148. while (temp != null)
  149. {
  150. if (temp.Value < head.Value)
  151. { Console.Write(temp.Value.ToString() + " "); flag = true; }
  152. temp = temp.Next;
  153. }
  154. if (flag == false) Console.Write("Элементов, меньше первого, нет в списке");
  155. }
  156. else
  157. Console.WriteLine("Список пуст!");
  158. }>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  159. }
  160. static void Main(string[] args)
  161. {
  162. List List = new List();
  163. List.Menu();
  164. int c = int.Parse(Console.ReadLine());
  165. while (c != 8)
  166. {
  167. switch (c)
  168. {
  169. case 1: List.FirstElem(); break;//заполнить список
  170. case 2: List.Show(); break;//просмотреть список
  171. case 3: List.Right_Element(); break;//добавить новый элемент
  172. case 4: List.Delete_Elements(); break;//удалить элемент
  173. case 5: List.Clear_list(); break;//очистить список
  174. case 6: break;//выход
  175. default: Console.Write("Команды с таким номером нет!"); break;
  176. }
  177. do Console.Write("\nДля продолжения нажмите клавишу Enter....");
  178. while (Console.ReadKey().Key != ConsoleKey.Enter);
  179. List.Menu();
  180. c = int.Parse(Console.ReadLine());
  181. }
  182. }

Решение задачи: «Циклический однонаправленный линейный список с функцией поиска отрицательных элементов в списке»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication2
  7. {
  8.     class Program
  9.     {
  10.         class ListElem // класс элемент списка
  11.         {
  12.             public int Value; // поле данных
  13.             public ListElem Next; // поле - переход на след. элемент
  14.             public ListElem(ListElem next, int value) // конструктор класса
  15.             {
  16.                 Next = next; // заполнение поля
  17.                 Value = value; // заполнение поля
  18.             }
  19.         }
  20.         class List // класс список
  21.         {
  22.             int value;
  23.             public ListElem head = null; // заголовок списка
  24.             public ListElem current = null; // текущий элемент списка
  25.             public List() { } // пустой конструктор
  26.  
  27.             public void Menu() // вставка элемента в начало списка
  28.             {
  29.                 Console.Clear();
  30.                 Console.WriteLine("Главное меню:\n");
  31.                 Console.WriteLine(" 1. Заполнить список.");
  32.                 Console.WriteLine(" 2. Просмотреть список.");
  33.                 Console.WriteLine(" 3. Добавить новый элемент.");
  34.                 Console.WriteLine(" 4. Поиск элемента.");
  35.                 Console.WriteLine(" 5. Удалить элемент.");
  36.                 Console.WriteLine(" 6. Очистить список.");
  37.                 Console.WriteLine(" 7. Индивидуальное задание(вариант 12).");
  38.                 Console.WriteLine(" 8. Выход.\n");
  39.                 Console.WriteLine("\nВЫБЕРИТЕ НОМЕР НУЖНОГО ЗАДАНИЯ!\n");
  40.  
  41.             }
  42.             public void FirstElem() // вставка элемента в начало списка
  43.             {
  44.                 Console.Clear();
  45.                 Console.Write("Сколько элементов Вы хотите ввести? ");
  46.                 int n = int.Parse(Console.ReadLine());
  47.                 Console.WriteLine("Введите " + n + " элементов.\n");
  48.                 for (int i = 0; i < n; i++)
  49.                 {
  50.                     value = int.Parse(Console.ReadLine());
  51.  
  52.  
  53.                     ListElem temp = new ListElem(null, value); // создание нового элемента списка и заполнение его значениями
  54.                     if (head == null) // если список пуст
  55.                         head = temp; // новый элемент становится первым
  56.                     else
  57.                     {
  58.                         temp.Next = head; // добавление в новый элемент ссылки на первый элемент
  59.                         head = temp; // перезапись первого элемента
  60.                     }
  61.                 }
  62.             }
  63.  
  64.             public void Show() // метод просмотра списка
  65.             {
  66.                 Console.Clear();
  67.                 Console.Write("Однонаправленный список: ");
  68.                 if (head == null) // если список пуст
  69.                     Console.WriteLine("список пуст!");
  70.                 else
  71.                 {
  72.                     ListElem temp = head; // создание нового элемента и запись в него первого
  73.                     while (temp != null) // цикл до конца списка
  74.                     {
  75.                         Console.Write(temp.Value + "  "); // вывод на экран текущего значения
  76.                         temp = temp.Next; // переход к след. элементу
  77.                     }
  78.                     Console.WriteLine("");
  79.                 }
  80.             }
  81.  
  82.             public void FindElem() // метод поиска элемента по значению
  83.             {
  84.                 Console.WriteLine("Введите элемент для поиска: ");
  85.                 value = int.Parse(Console.ReadLine());
  86.                 ListElem temp = head; // запись первого элемента в новый
  87.                 Console.WriteLine("Результаты поиска: ");
  88.                 while (temp != null) // цикл пока не дошли до конца списка
  89.                 {
  90.                     if (temp.Value == value) // если элемент найден
  91.                         Console.Write(temp.Value); // вернуть найденный элемент
  92.                     temp = temp.Next; // переход к след. элементу
  93.                 }
  94.             }
  95.            
  96.             public void Right_Element()//вставка справа от текущего
  97.             {
  98.                 Console.Clear();
  99.                 if (head == null)
  100.                 {
  101.                     Console.WriteLine("Заполните список!");
  102.                 }
  103.                 else
  104.                 {
  105.                     Console.WriteLine("После какого элемента вставить новый? ");
  106.                     int m = int.Parse(Console.ReadLine());
  107.                     current = head;
  108.                     for (int i = 1; i < m; i++)
  109.                         current = current.Next; // переход к след. элементу;
  110.                     Console.WriteLine("Введите число: ");
  111.                     value = int.Parse(Console.ReadLine());
  112.                     ListElem temp = new ListElem(null, value);
  113.                     temp.Next = current.Next;
  114.                     current.Next = temp;
  115.                     current = temp;
  116.                 }
  117.             }
  118.             public void Delete_Elements()//удаление элемента
  119.             {
  120.                 Console.Clear();
  121.                 if (head != null)
  122.                 {
  123.                     Show();
  124.                     ListElem temp = head;
  125.                     ListElem prev = head;
  126.                     int i = 1;
  127.                     Console.WriteLine("Введите позицию в списке (число): ");
  128.                     int pos = int.Parse(Console.ReadLine());
  129.                     while (pos != i)
  130.                     {
  131.                         prev = temp;
  132.                         temp = temp.Next;
  133.                         i++;
  134.                     }
  135.                     if (head == temp)
  136.                         head = head.Next;
  137.                     else
  138.                         prev.Next = temp.Next;
  139.                 }
  140.                 else
  141.                     Console.WriteLine("Список и так пустой! Удалять нечего.");
  142.             }
  143.             public void Clear_list()//метод очистки списка
  144.             {
  145.                 ListElem temp;
  146.                 while (head != null)
  147.                 {
  148.                     temp = head.Next;
  149.                     head = temp;
  150.                 }
  151.             }
  152.  
  153.             public void Variant_20()//индивидуальное задание
  154.             {
  155.                 Console.Clear();
  156.                 Console.WriteLine("12.  Организовать однонаправленный линейный список с функцией вывода на экран отрицательных элементов.\n");
  157.                 ListElem temp = head.Next;
  158.                // ListElem prev = head;
  159.                 if (head != null)
  160.                 {
  161.                     bool flag = false;
  162.                     while (temp != null)
  163.                     {
  164.                         if (temp.Value < 0)
  165.                         { Console.Write(temp.Value.ToString() + " "); flag = true; }
  166.                         temp = temp.Next;
  167.                     }
  168.                     if (flag == false) Console.Write("отрицательних Элементов, нет в списке");
  169.                   }
  170.                 else
  171.                     Console.WriteLine("Список пуст!");
  172.             }
  173.         }
  174.         static void Main(string[] args)
  175.         {
  176.             List List = new List();
  177.             List.Menu();
  178.             int c = int.Parse(Console.ReadLine());
  179.             while (c != 8)
  180.             {
  181.                 switch (c)
  182.                 {
  183.                     case 1: List.FirstElem(); break;//заполнить список
  184.                     case 2: List.Show(); break;//просмотреть список
  185.                     case 3: List.Right_Element(); break;//добавить новый элемент
  186.                     case 4: List.FindElem(); break;//поиск элемента
  187.                     case 5: List.Delete_Elements(); break;//удалить элемент
  188.                     case 6: List.Clear_list(); break;//очистить список
  189.                     case 7: List.Variant_12(); break;//индивидуальное задание (12 вариант)
  190.                     case 8: break;//выход
  191.                     default: Console.Write("Команды с таким номером нет!"); break;
  192.                 }
  193.                 do Console.Write("\nДля продолжения нажмите клавишу Enter....");
  194.                 while (Console.ReadKey().Key != ConsoleKey.Enter);
  195.  
  196.                 List.Menu();
  197.                 c = int.Parse(Console.ReadLine());
  198.             }
  199.         }
  200.     }
  201. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы