Найти среднее арифметическое информационного поля односвязного линейного списка - C#
Формулировка задачи:
Дан односвязный линейный список, информационное поле которого целое число, найти среднее арифметическое этого списка.
Сказли можно в консольном приложении сделать. Выручайте, пожалуйста
Решение задачи: «Найти среднее арифметическое информационного поля односвязного линейного списка»
textual
Листинг программы
- class Program
- {
- static void Main(string[] args) {
- Console.WriteLine($"Среднее арифметическое списка: {OneWayLinkedListElement<int>.MakeList(100, 100500, 300, 5).Average()}");
- Console.ReadKey();
- }
- }
- public class OneWayLinkedListElement<T> : IEnumerable<T>
- {
- // Следующий элемент
- public OneWayLinkedListElement<T> NextElement { get; set; }
- // Информационное поле (ну и название блин)
- public T Data { get; set; }
- #region IEnumerable<T>, IEnumerable
- public IEnumerator<T> GetEnumerator() {
- yield return Data;
- var currentElement = NextElement;
- while (currentElement != null)
- {
- yield return currentElement.Data;
- currentElement = currentElement.NextElement;
- }
- }
- IEnumerator IEnumerable.GetEnumerator()
- => GetEnumerator();
- #endregion
- // Создать односвязанный список и вернуть его корень
- public static OneWayLinkedListElement<T> MakeList(params T[] dataCollection)
- => MakeList(dataCollection as IEnumerable<T>);
- // Создать односвязанный список и вернуть его корень
- public static OneWayLinkedListElement<T> MakeList(IEnumerable<T> dataCollection) {
- if (dataCollection == null)
- return null;
- OneWayLinkedListElement<T> root = null;
- OneWayLinkedListElement<T> previous = null;
- foreach (var data in dataCollection) {
- var currentElement = new OneWayLinkedListElement<T>() { Data = data };
- if (previous != null)
- previous.NextElement = currentElement;
- else
- root = currentElement;
- previous = currentElement;
- }
- return root;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д