С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
81 / 25 / 19
Регистрация: 27.10.2014
Сообщений: 420
1

Добавление элемента в конец списка

16.07.2015, 01:42. Показов 1501. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решил перегрузить функцию добавления элемента, чтоб пользователь мог выбрать куда добавить новый элемент, в начало (перед первым) или в конец (после последнего).
Кликните здесь для просмотра всего текста
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
struct List{
private:
    Rab elem;
    List *next; 
public:
    List *begin = NULL;
    List *end = NULL;
    
 
    void add(const char *x)
    {
        List *add = new List;
        add->elem.name = new char[strlen(x) + 1];
        strcpy(add->elem.name, x);
        //strcpy_s(add->elem.name, strlen(x) + 1, x);
        add->next = NULL;
        if (!begin)
            begin = add;
        else
            end->next = add;
        end = add;
    }
 
    void add(const char *x, List *point)
    {
        List *add = new List;
        add->elem.name = new char[strlen(x) + 1];
        strcpy(add->elem.name, x);
        add->next = NULL;
        if (!begin)     
            begin = add;        
        else if (point == begin)
        {
            add->next = begin;
            begin = add;
        }
        else
        {
            end->next = add;
            end = add;
        }
    }

Все хорошо да вот только не работает добавление в конец списка, за него отвечает вот этот кусочек
C++
1
2
3
4
5
        else
        {
            end->next = add;
            end = add;
        }
Появляется ошибка при добавлении второго элемента. Помогите разобраться...
Первый этап обработки исключения по адресу 0x0027A086 в trenList.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000004.
Необработанное исключение по адресу 0x0027A086 в trenList.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000004.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2015, 01:42
Ответы с готовыми решениями:

Добавление элемента в конец списка
Сначала добавляет первый элемент, а далее не хочет? Посмотрите свежим глазом, а то я лагаю! void...

Добавление элемента в конец односвязного списка
Добрый день. Помогите решить проблему с ошибкой в функции AddItem. CPP файл #include "stdafx.h"...

Динамические списки: добавление элемента в конец списка
В универе дали такой код. Так как это мое первое знакомство со списками то я очень вдупляю все....

Добавление элемента в конец односвязного списка - ошибка
Всем привет! Собственно, задача такая: написать функцию, добавляющую элемент в конец связного...

4
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
16.07.2015, 01:58 2
Цитата Сообщение от valeriy007 Посмотреть сообщение
add->next = begin;
* * * * * * begin = add;
Тут он сам на себя будет указывать(в качестве след элемента цепи )
0
81 / 25 / 19
Регистрация: 27.10.2014
Сообщений: 420
16.07.2015, 11:37  [ТС] 3
Цитата Сообщение от _Valera_ Посмотреть сообщение
Тут он сам на себя будет указывать(в качестве след элемента цепи )
Не понял
0
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
16.07.2015, 14:40 4
Цитата Сообщение от valeriy007 Посмотреть сообщение
Не понял
я тоже, дайте весь код.
0
81 / 25 / 19
Регистрация: 27.10.2014
Сообщений: 420
16.07.2015, 16:21  [ТС] 5
Цитата Сообщение от _Valera_ Посмотреть сообщение
дайте весь код.
Кликните здесь для просмотра всего текста
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
struct Rab
{   
    char *name; 
};
 
struct List{
private:
    Rab elem;
    List *next; 
public:
    List *begin = NULL;
    List *end = NULL;
    
 
    void add(const char *x)
    {
        List *add = new List;
        add->elem.name = new char[strlen(x) + 1];
        strcpy(add->elem.name, x);
        //strcpy_s(add->elem.name, strlen(x) + 1, x);
        add->next = NULL;
        if (!begin)
            begin = add;
        else
            end->next = add;
        end = add;
    }
 
    void add(const char *x, List *point)
    {
        List *add = new List;
        add->elem.name = new char[strlen(x) + 1];
        strcpy(add->elem.name, x);
        add->next = NULL;
        if (!begin)     
            begin = add;        
        else if (point == begin)
        {
            add->next = begin;
            begin = add;
        }
        else
        {
            end->next = add;
            end = add;
        }
    }
void cprint()
    {
        for (int i = 0; i < size(); i++)
            std::cout << print(i) << std::endl;
    }
 
    auto print(int num) -> decltype(elem.name)
    {
        List *iter = begin;
        int it = 0;
        while (iter)
        {
            if (it == num)
                return iter->elem.name;
            iter = iter->next;
            it++;
        }
        return "NULL";
    }
    
    auto Begin() -> decltype(elem.name)
    {
        return begin->elem.name;
    }
 
    auto End() -> decltype(elem.name)
    {
        return end->elem.name;  
    }
 
    int size()
    {
        List *iter = begin;
        int count = 0;
        while (iter)
        {
            count++;
            iter = iter->next;
        }
        return count;   
    }
 
};

С auto и decltype игрался чтоб функция возвращала нужные мне значения.
0
16.07.2015, 16:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2015, 16:21
Помогаю со студенческими работами здесь

Односвязный список: добавление элемента в конец списка
Здравствуйте, учу списки, стояла задача - добавить в готовый список элементы в...

Списки. Функции добавление списка в конец и в середину другого списка.
Всем привет!) Я вот написал две функции, 1- добавляется список2 в середину списка1, а 2 - добавляет...

Добавление в конец списка
Привет всем, необходимо реализовать алгоритм вставки. В общем беру элемент на нечетной позиции...

Добавление в конец двусвязного списка
Помогите найти ошибку в коде: не работает добавление в конец. Список формируется добавлением в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru