Объясните код работы данного односвязного списка - C#
Формулировка задачи:
Здравствуйте! Хотелось, что бы мне последовательно объяснили те строчки кода, которые выложены ниже, частично я их сам понимаю. Если есть то, что я неправильно указал в комментариях к коду, пожалуйста, поправьте.
Скажите, пожалуйста.
namespace LinkedList // создали класс с названием LinkedList
{
public class Item // создали класс Item, как я понимаю из теории это так называемый узел(Node)
{
public int Value; // создали поле типа int и назвали его Value
public Item Next; // создали поле типа Item и назвали его Next
public Item(int value) // создали конструктор и назвали его Item и указали входной параметр value типа int (вопрос зачем указывать входной параметр)
{
Value = value; // полю Value присвоили значение value, которое является параметром для конструктора Item
Next = null; // присвоили полю Next значение null
}
}
}namespace LinkedList // работаем в пространстве имен LinkedList
{
class MyList // создаем класс MyList
{
Item Head; // создали поле Head типа Item
Item Tail; // создали поле Tail типа Item
public MyList() // создали конструктор MyList. Почему мы здесь не указали входной параметр, как сделали это в public Item(int value)
{
Head = null; // присвоили полю Head значение null. Вопрос зачем?
}
public void AddToTail(int value) // создали метод добавления элемента(могу неправильно сказать) поправьте, пожалуйста, в хвост списка списка. Указали у него входной value типа int. Вопрос зачем?
{
if (Head == null) // условие: если поле Head равно пустому значение, то выполняется следующее действие
{
Head = new Item(value); // создали объект Head класса Item. Вопрос 1) как имя поля может совпадать с именем вновь созданного объекта 2) ведь, когда мы создаем новый объект класса мы пишем конструкцию вида Имя_класса название объекта = new Имя_Конструктора(); 3) Действительно ли мы создали новый объект класса 4) Если действительно создали новый объект класса, то зачем в качестве параметра указали value?
Tail = Head; // полю Tail присвоили значение поля Head. Вопрос зачем? Какая смысловая нагрузка тут
}
else // альтернативный случай, если Head не равно пустому значению
{
Tail.Next = new Item(value); // не понимаю абсолютно ничего
Tail = Tail.Next; // аналогично всё неясно
}
}
public void AddToHead(int value) // создали метод добавление элемента в голову списка. Указали у него входной параметр value типа int. Вопрос зачем?
{
Item p = new Item(value); // создали новый объект p класса
p.Next = Head; //что мы здесь хотели сказать???
Head = p; // и здесь???
}Решение задачи: «Объясните код работы данного односвязного списка»
textual
Листинг программы
using System;
using System.Windows.Forms;
namespace LinkedList
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
//tb_Input - в вашем случае самый верхний textBox
//tb_Output - средний textBox
//назначение третьего мне пока не понятно
private void bt_ConvertToStringWithPluss_Click(object sender, EventArgs e)
{
if (tb_Input.Text.Length > 0)//если есть что преобразовывать
{
for (int i = 0; i < tb_Input.Text.Length; i++)//для каждого символа строки в tb_Input
{
tb_Output.Text += tb_Input.Text[i] + " + ";//вписываем текущий символ с добавлением " + "
}
}
}
}
}