Однонаправленный линейный список с функцией вывода на экран только положительных элементов списка - 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;
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. Индивидуальное задание(вариант 20).");
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("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.FindElem(); break;//поиск элемента
case 5: List.Delete_Elements(); break;//удалить элемент
case 6: List.Clear_list(); break;//очистить список
case 7: List.Variant_20(); break;//индивидуальное задание (20 вариант)
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());
}
}
}
}Решение задачи: «Однонаправленный линейный список с функцией вывода на экран только положительных элементов списка»
textual
Листинг программы
public void Variant_20()
{
Console.Clear();
Console.WriteLine("20. Организовать однонаправленный линейный список с функцией вывода на экран только положительных элементов списка.\n");
if (head == null)
return;
ListElem next = head.Next;
while(next != null)
{
if (next.Value > 0)
Console.WriteLine(next.Value);
next = next.Next;
}
}