Объясните код работы данного односвязного списка - 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] + " + ";//вписываем текущий символ с добавлением " + " } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д