Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
1

Линейный односвязный список: реализовать добавление элемента после узла с заданным ключом

10.04.2018, 23:50. Показов 3710. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, кто может понять это задание добавление элемента после узла с заданным ключем
процедура называется так :
C++
1
Node * insert(Node *const pbeg, Node **pend, int key, int d1);
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
struct Node
{
    int d;
    Node *next;
    Node *prev;
};
Node *first(int d1) {
    Node *pv = new Node;
    pv->d = d1;
    pv->next = NULL;
    pv->prev = NULL;
    return pv;
}
 
void add(Node **pend, int d1)
{
    Node *pv = new Node;
    pv->d = d1;
    pv->next = NULL;
    pv->prev = *pend;
    (*pend)->next = pv;
    *pend = pv;
}
 
void printlist(Node *pv)
{
    while (pv != NULL)
        {
            cout << pv->d <<" ";
            pv = pv->next;
        }
        cout << endl;
    
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2018, 23:50
Ответы с готовыми решениями:

Добавление элемента после элемента с заданным ключом в однонаправленном списке
Здравствуйте! У меня неправильно работает функция insert, которая должна добавлять элемент после...

Вставка элемента в линейный односвязный список после заданного
Я составила программу, но возникла проблема с реализацией вставки элемента после указанного...

Односвязный список. Реализовать член-функцию «получение элемента с заданным порядковым номером»
Как реализовать подобное задание? Узел списка Комната с член-данными ширина (float), длина...

Добавление элемента в линейный список после 1-го, 3-го, 5-го и т.д
Помогите пожалуйста, нужно написать функцию добавления в линейный список заданного элемента после...

9
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
11.04.2018, 01:16 2
а где тут ключи? У тебя обычный список без ключей.
0
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
11.04.2018, 11:24  [ТС] 3
Kuzia domovenok, как понять, что будут за ключи? Я сделал вставку элемента в указанной позиции
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
11.04.2018, 18:42 4
Цитата Сообщение от vladis23 Посмотреть сообщение
Kuzia domovenok, как понять, что будут за ключи?
это тебя надо спросить. Ты же тут программист, раздающий задания.
0
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
11.04.2018, 23:38  [ТС] 5
Kuzia domovenok, Я думаю такой у меня смысл задания:
Дан адрес NewNode нового узла и адрес p одного из существующих узлов в списке. Тре-
буется вставить в список новый узел после узла с адресом p. Эта операция выполняется в два
этапа:
1) установить ссылку нового узла на узел, следующий за данным;
2) установить ссылку данного узла p на NewNode.

Добавлено через 58 секунд
Kuzia domovenok, Код взят из книги:
C++
1
2
3
4
5
void AddAfter (PNode p, PNode NewNode)
{
NewNode->next = p->next;
p->next = NewNode;
}
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
12.04.2018, 02:44 6
vladis23, зачем ты мне пишешь о том, что и так известно, и о том, что ты содрал с книги?
Не лучше ли написать то, чего тут не хватает, а именно то, что сказал преподаватель, а ты не понял! Он тебе сказал: "сделай вставку по ключу". Я бы после этих слов моментально вскочил с вопросом "что является ключом в списке"? И ещё несколько доп.вопросов позадавал.
0
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
12.04.2018, 10:41  [ТС] 7
Kuzia domovenok, прошу прощения, это линейный двусвязный список
0
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
14.04.2018, 21:27  [ТС] 8
Kuzia domovenok, Преподаватель подразумевала под это задание:

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
Node *find(Node *const pbeg, int key)
{
    Node *pv = pbeg;
    while (pv)
    {
        if (pv->d == key)
            break;
        else
            pv = pv->next;
    }
    return pv;
}
 
Node * insert(Node *const pbeg, Node **pend, int key, int d1)
{
 
    if (pbeg == find(pbeg, key))
    {
        Node *pv = new Node;
        pv->d = d1;
        pv->next = pbeg->next;
        pv->prev = pbeg;
        pbeg->next = pv;
        if (pbeg != *pend)
            (pv->next)->prev = pv;
        else
            return *pend = pv;
 
    }
    return NULL;
}
Я его запускаю и ничего не происходит, никакой вставки не вижу!
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
15.04.2018, 05:30 9
C++
1
2
3
4
Node * insert(Node *const pbeg, Node **pend, int key, int d1)
{
 
    if (pbeg == find(pbeg, key))
"если место вставки это в начало списка, то может ещё и соизволим что-то сделать, иначе фиг вам"
0
13 / 13 / 10
Регистрация: 25.05.2015
Сообщений: 554
15.04.2018, 11:51  [ТС] 10
Kuzia domovenok, вот такое исправленное:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Node *insert (Node *const pbeg, Node **pend, int key, int d)// Вставка элемента
{
if(Node *pkey = find(pbeg, key))
{
Node *pv = new Node;
pv->d = d;
pv->next = pkey->next;// установление связи нового узла с последующим
pv->prev = pkey;// установление связи нового узла с предыдущим
pkey->next = pv;// установление связи предыдущего узла с новым
if(pkey != *pend)(pv->next)->prev = pv;// установление связи последующего узла с новым
// Обновление указателя на конец списка,
// если узел вставляется в конец
else *pend = pv;
return pv;
}
return 0;
}
0
15.04.2018, 11:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2018, 11:51
Помогаю со студенческими работами здесь

Добавление элементов в односвязный линейный список
Всем добрый день! Написала функцию, которая добавляет элементы в список, причем каждый элемент...

Clojure Добавление атомов в список после элемента с заданным свойством
Помогите сделать, желательно на homelisp.. Определить функцию, добавляющую атом/атомы в исходный...

Попытка реализовать односвязный линейный список
Доброго времени суток! Пробую реализовать односвязный линейный список в виде структуры. #include...

вставка элемента в линейный односвязный список
Здравствуйте! У меня вот такое задание: требуется программа, позволяющая вставлять новый элемент...


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

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