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