Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27

Объясните код работы данного односвязного списка

21.10.2016, 12:17. Показов 710. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Хотелось, что бы мне последовательно объяснили те строчки кода, которые выложены ниже, частично я их сам понимаю. Если есть то, что я неправильно указал в комментариях к коду, пожалуйста, поправьте.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   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
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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; // и здесь???
        }

Скажите, пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.10.2016, 12:17
Ответы с готовыми решениями:

Стек на основе односвязного списка (доработать код)
Написать класс "стек" (первый пришел, последний ушел) на основе односвязного списка. Реализовать методы Push и Pop. Стек хранит структуру...

Почему не работают методы списка (односвязного), при вызове ф-ий? (Код прилагается)
Написал такой код, для односвязного списка. И когда начал компилировать, столкнулся с проблемой : не работают методы. Ошибка в том,...

объясните код списка
#include <stdlib.h> #include <stdio.h> #define SIZE 11 typedef int TE; struct list { TE data;

8
28 / 28 / 23
Регистрация: 06.10.2016
Сообщений: 74
21.10.2016, 14:30
Обычно сложно судить вырванное из контекста на предмет "Зачем???", но пока у меня возникло устойчивое желание покурить волшебную субстанцию, как у автора "кода". Возможно это приведёт в ту же Нирвану к пониманию причин.
0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27
21.10.2016, 15:34  [ТС]
FourthDimension, будьте любезны)

Добавлено через 23 минуты
Была задача добавление элемента а) в голову б) в конец списка. Работал в VS писали цифры, как вариант 1,2,3,4 в TextBox1, а TextBox2 значения из TextBox1 становились на нужные места.
0
28 / 28 / 23
Регистрация: 06.10.2016
Сообщений: 74
21.10.2016, 16:10
Если я Вас правильно понял, то нужно в некий список добавлять элемент по какому то событию.
Что то типа этого?
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    class Program
    {
        static string List = "";
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Введите элемент:");
                string el = Console.ReadLine();
                Console.WriteLine("Добавить в голову\\хвост (0\\1):");
                string ToHead = Console.ReadLine();
                if (ToHead == "0")
                    InsertToHead(el, true);
                else
                    InsertToHead(el, false);
                Console.WriteLine("Результат добавления: {0}", List);
            }
            Console.ReadKey();
 
 
        }
        static void InsertToHead(string elem, bool flag) 
        {
            if (List.Length == 0)
            { List = elem + ","; return; }
            if (flag)
                List = elem + "," + List;
            else
                List += elem + ",";
        }
 
    }
0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27
22.10.2016, 16:47  [ТС]
Вот принтскрин
Миниатюры
Объясните код работы данного односвязного списка  
0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27
22.10.2016, 16:51  [ТС]
Вот, что получается после нажатия на кнопку
Миниатюры
Объясните код работы данного односвязного списка  
0
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27
22.10.2016, 16:54  [ТС]
Что Вы написали,я, честно говоря, не понял.

Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
public string Print()
        {
            string result = "";
            Item p = Head;
            while (p != null)
            {
                result += p.Value.ToString() + "  ";
                p = p.Next;
            }
            return result;
        }
Вот еще часть кода которая отвечает за вывод информации

Добавлено через 42 секунды
только result +=p.Value.ToString() + " + ";
0
28 / 28 / 23
Регистрация: 06.10.2016
Сообщений: 74
23.10.2016, 00:12
Если дело только в том как приделать к каждому символу " + ", то я не понимаю зачем вся сложность с классами.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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] + " + ";//вписываем текущий символ с добавлением " + " 
 
                }
            }
        }
    }
}

Работа со строкой самая простейшая.
Не поленитесь, почитайте о возможностях работы со строкой.Там много полезного.
http://professorweb.ru/my/csha... l4/4_7.php
1
0 / 0 / 0
Регистрация: 18.10.2016
Сообщений: 27
23.10.2016, 01:14  [ТС]
Спасибо за проявленное внимание, но я честно хотел, что бы поправили и дополнили мои комментарии к коду, указанному в самом верху.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2016, 01:14
Помогаю со студенческими работами здесь

Объясните код программы работы с двумерными массивами
#include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; const int...

Объясните пожалуйста код и ход работы программы на С++
Вот код фрагмента программы: int i; int l=strlen(str); int k=strlen(fsubstr); bool fl=true; for...

Недостаточно свободных ресурсов для работы данного устройства. (Код 12)
на ноуте нр 4520s ос в7 слетел драйвер на видео, скачивал с оф. сервера ,устонавливал -удалял раз сто, пишет -Недостаточно свободных...

Объясните код программы для работы с текстовыми файлами
Вот, собственно говоря, сам код: #include&gt; &quot;stdafx.h&quot; #include &lt;stdio.h&gt; void main(int argc,char *argv) { FILE *in; int ch; ...

Ошибка с видеокартой - недостаточно свободных ресурсов для работы данного устройства (код 12)
столкнулся с проблемой: стоит видюха GeForce 7600GT, Windows7 ultimate x64. при установке дров с сайта нВидиа видюха все раввно не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru