Вопрос из предыдущего поста появился на занятиях после проведения десятиминутной самостоятельной работы.
Когда фантазия по вариантам на "летучку" иссякла, я сделала заготовку для вершины двусвязного списка.
И задание: В файле HandOuts_56.4.1.cs Класс Node представляет вершину двусвязного списка, поля класса – следующая и предыдущая вершина (Справка: у первой вершины списка ссылка на предыдущую вершину равна null, у последней ссылка на следующую равна null). Вершины связаны между собой отношением агрегации. Дополните описание класса: 1. кодом свойств Next и Prev, возвращающих ссылки на предыдущую и следующую вершину 2. методом addAfter() с параметром – Node – вершиной добавляемой после текущей. Остальной код консольного приложения оставьте без изменений.
using System;
public class Node {
double weigth; // вес вершины
Node next; // следующая вершина
Node prev; // предыдущая вершина
// свойства
public double Weigth { get { return weigth; } }
// конструктор с параметром - вес вершины
public Node(double weigth) {
if (weigth >= 0) {
this.weigth = weigth;
next = null;
prev = null;
}
else throw new ArgumentOutOfRangeException("Должен быть не меньше нуля!");
}
// добавить вершину после текущей addAfter
}
class Program {
static void Main(string[] args) {
Node head = new Node(0);
Node curr = head;
int N = 33;
// добавляем N вершин с случайными
// весами из диапазона от [0;1)
Random rnd = new Random();
for (int i = 0; i < N; i++) {
curr.addAfter(new Node(rnd.NextDouble()));
curr = curr.Next;
}
curr.addAfter(new Node(1));
curr = head;
// вывод списка на экран
do {
Console.WriteLine("{0:f3}", curr.Weigth);
curr = curr.Next;
} while (curr != null);
}
}
И задание: В файле HandOuts_56.4.1.cs Класс Node представляет вершину двусвязного списка, поля класса – следующая и предыдущая вершина (Справка: у первой вершины списка ссылка на предыдущую вершину равна null, у последней ссылка на следующую равна null). Вершины связаны между собой отношением агрегации. Дополните описание класса: 1. кодом свойств Next и Prev, возвращающих ссылки на предыдущую и следующую вершину 2. методом addAfter() с параметром – Node – вершиной добавляемой после текущей. Остальной код консольного приложения оставьте без изменений.