Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210

Не добавляются элементы в список

19.12.2012, 22:58. Показов 1310. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
У меня проблемка... не добовляются элементы в список, не знаю почему логика вроде правильная...

Не могли бы посмотреть в чем ошибка.
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
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
 
class Program
{
    static void Main(string[] args)
    {
        Node pbeg = new Node();
        Node pend = new Node();
        pbeg = pbeg.CreateList(); // имеем ссылку на начало
        pend =pbeg; // имеем ссылку на конец
 
        Node pv = new Node();
        pv.add(pend, 4);
        Console.WriteLine(pv.data);
    }
}
 
class Node
{
    public int data;
    public Node next;
    public Node prev;
 
    public Node CreateList()
    {
        Node pv = new Node();
        pv.next = null;
        pv.prev = null;
        return pv;
    }
    public void add(Node pend, int Data)
    {
        Node pv = new Node();
        pv.data = Data;
        pv.next = null;
        pv.prev = pend;
        pend.next = pv;        
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.12.2012, 22:58
Ответы с готовыми решениями:

Элементы не добавляются в список
Есть 2 формы, 1 получает данные из бд, вторая их выводит в listbox. //1-форма public class Form1 { static void main(){ var...

однонаправленный список: элементы добавляются и удаляются с начала, просматриваются с конца списка
Вот друзья задание: Реализовать алгоритм работы с динамической структурой данных – однонаправленный список: элементы добавляются и...

Двунаправленный список: элементы добавляются и просматриваются с конца, а удаляются с начала списка
Помогите пожалуйста. Реализовать программу с динамической структурой данных – двунаправленный список: элементы добавляются и...

8
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.12.2012, 00:46
Особо не вникал, но зачем это?
C#
1
        pv.data = Data;
Чё за pv и зачем он нужен я не понял. Может, так надо?
C#
1
        data = Data;
1
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210
20.12.2012, 08:14  [ТС]
да, действительно в этом была проблема.

Добавлено через 23 минуты
один элемент добавился, а потом все... сдыхает
не знаю, почему ??

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
 
class Program
{
    static void Main(string[] args)
    {
        Node pbeg = new Node();
        Node pend = new Node();
        pbeg = pbeg.CreateList(); // имеем ссылку на начало
        pend = pbeg; // имеем ссылку на конец
 
        Node pv = new Node();
        pv = pbeg;
        for (int i = 1; i <= 10; i++)
        {
            pv.add(pend, i);
        }
 
        pv = pbeg;
        for (int i = 0; i < 10; i++) { Console.WriteLine(pv.data); pv = pv.next; }
    }
}
 
class Node
{
    public int data;
    public Node next;
    public Node prev;
 
    public Node CreateList()
    {
        Node pv = new Node();        
        next = null;
        prev = null;
        return pv;
    }
    public void add(Node pend, int data)
    {
        this.data = data;
        Node pv = new Node();
        next = null;
        prev = pend;
        pend.next = pv;
        pend = pv;
    }
}
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.12.2012, 11:27
next должен указывать на следующий элемент, это я понял. А prev куда?
0
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210
20.12.2012, 17:14  [ТС]
prev указывает на последний элемент
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.12.2012, 22:18
Смотри, вот ошибка по-моему.

C#
1
pv.add(pend, i);
Ты передаёшь в функцию ссылку pend и меняешь там её
C#
1
pend = pv;
Но это тебе кажется, что меняешь. При такой передаче она существует как бы в двух экземплярах. Первый экземпляр передаётся, а второй принимается. Вот ты применяемый экземпляр и изменяешь, а отправляемый- нисколько. Чтобы добиться нужного эффекта, по-моему надо применить ключевое слово ref

C#
1
2
    pv.add(ref pend, i);
    public void add(ref Node pend, int data)
0
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210
21.12.2012, 06:49  [ТС]
Конечно результат изменился, но выходит ошибка - " Ссылка на объект не указывает на экземпляр объекта. "

Объясните пожалуйста.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
21.12.2012, 11:43
Думаешь, я знаю?

теперь смотри:
Цитата Сообщение от Maratovich Посмотреть сообщение
pv.add(pend, i);
Это что за конструкция? Ты, насколько я понял, всегда собираешься добавлять элемент в конец списка. Ну так добавляй.
Цитата Сообщение от Maratovich Посмотреть сообщение
pv.add(i);
и реализуй так, чтобы он добавлялся в конец списка. Надо упрощать код, а не услложнять!

Добавлено через 23 минуты
И вот ещё что. Смотри, как я привык работать. Допустим, есть у меня любой контейнер, условно говоря X и есть его содержание- набор объектов Y (или ссылок на них, сейчас неважно). У тебя же я вижу, что: есть класс Node (контейнер), который вмещает в себя ТАКИЕ ЖЕ контейнеры. Вот, при прибавлении элемента к контейнеру Node ты создаёшь ссылку на этот элемент (внутри контейнера, в функции add)
C#
1
Node pv = new Node();
по-моему это лажа какая-то

Добавлено через 1 час 9 минут
Я бы так написал:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
 
 
class Program
{
    
    //Это вот класс- элемент
    public class Node_
    {
        public int data;
        public Node_ next;
    }
 
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    //А это класс-контейнер
    class Node
    {
        //Это будет указатель на самый первый элемент
        public Node_ beg;
 
        //А это на последний
        Node_ end;
 
        //Никаких next и data! 
        //next и data это атрибуты класса-элемента!
 
 
        //Этот вот конструктор заменяет CreateList
        public Node ()
        {
            //С этим думаю всё понятно.
            //Две ссылки указывают на null;
            beg = end = null;
        }
 
        public void add(int data)
        {
            //Процедура добавления стандартная КРОМЕ САМОГО ПЕРВОГО РАЗА
 
            //Это мы будем добавлять
            Node_ temp = new Node_();
            temp.data = data;
            temp.next = null;
 
            //Это вот если в первый раз добавляется
            if (beg == null)
            {
                //Тут просто всё, делаем так чтобы beg и end
                //указывали на добавленый элемент
                beg = end = temp;
            }
            //А если не первый, тогда чуть посложнее
            else
            {
                end.next = temp;
                end = temp;
            }
        }
    }
 
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    static void Main(string[] args)
    {
        //Создадим контейнер
        Node pbeg = new Node ();
        //Создали
 
 
        //ДОбавим в него элементы
        for (int i = 1; i <= 10; i++)
        {
            pbeg.add(i);
        }
 
        //Выведем
        Node_ pv= pbeg.beg;
        for (int i = 1; i <= 10; i++)
        {
            Console.WriteLine(pv.data); 
            pv = pv.next;
        }
 
    }
}
1
13 / 17 / 6
Регистрация: 05.09.2012
Сообщений: 210
21.12.2012, 22:37  [ТС]
Спасибо за помощь, понимание и терпение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2012, 22:37
Помогаю со студенческими работами здесь

В список добавляются пустые строки
вот скрин, если и далее вычисляю, то он все больше пустых добавляет

Не добавляются элементы в GridLayout
код @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { ...

Не добавляются элементы в Qt Designer
Столкнулся с проблемой: открываю мой проект для редактирования, иду в Qt Designer, пытаюсь добавить кнопку, перетянув из столбца элементов....

Не добавляются элементы в ListBox
Почему в listbox не отображаются элементы. Должны выводится списки: студентов, групп и предметов которые изучает группа. И как сделать,...

В модель не добавляются элементы
Ситуация следующая: По нажатию кнопки создаю всплывающее окно с QStringListModel. В эту QStringListModel я добавляю несколько пунктов....


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru