Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
1

Список: Как вставить в список несколько элементов и присвоить адрес списка в элементу Node* ListMas[10];?

02.04.2018, 12:08. Показов 2043. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как вставить в список несколько элементов и присвоить адрес списка в элементу Node* ListMas[10];?

C++
1
2
curr->data = "q";
    ListMas[1] = curr;
тут только один добавляется.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// L2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
 
//стуктура, описывающая узел связанного списка
struct Node
{
    string data;
    Node* next;
};

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    List myList;
 
    setlocale(LC_ALL, "Russian");
    
        Node* ListMas[10];
    
 
    Node* curr;
    curr = new Node;
 
        curr->dataQ = "q";
    ListMas[val] = curr;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2018, 12:08
Ответы с готовыми решениями:

Двусвязный список. Как обратиться к первому элементу списка
Добрый день. Есть программа, для которой нужно сделать функцию FindMin, которая бы находила...

Предикат p(U, V, L) - истинный, когда список L есть список из элементов списка U без элементов списка V (Visual Prolog)
Здравствуйте, помогите разобраться с моей реализацией Видел уже решение данной задачи другим...

Вставить в список элементы другого списка после каждого вхождения X, если X входит в исходный список
Само задание(: Вставьте в список элементы другого списка после каждого вхождения X, если X входит...

Односвязный список. Подсчитать сумму N первых элементов. Удалить эти элементы и вставить в конец списка
Помогите, плиз доработать функцию summ - она должна подсчитать сумму N первых элементов. Удалить...

39
Заблокирован
02.04.2018, 12:43 2
Цитата Сообщение от 314251 Посмотреть сообщение
тут только один добавляется.
А почему по аналогии не сделать больше?
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 12:49  [ТС] 3
что-то у меня не получается, ступор какой-то, можешь дописать код пожалуйста
0
Заблокирован
02.04.2018, 13:05 4
C++
1
2
3
 ListMas[0] = new Node;
 ListMas[1] = new Node;
ListMas[1]->next = new Node;
И все в таком духе. А еще, если это в цикле сделать, ууууу...память должна течь! В общем, я не понимаю до конца, с чем конкретно проблема у тебя возникла.
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 13:19  [ТС] 5
ну смотри, есть элемент типа string его надо поместить в ListMas, индекс я сам должен ввести , потом я ещё раз ввожу элемент и индекс и если в этом индексе уже что-то есть, то нужно создать список и поместить туда эти элементы и присвоить адрес списка этому индексу массива ListMas.
0
Заблокирован
02.04.2018, 13:26 6
Вот в созданные ноды и помещай. Если элемент в массиве не nullptr, то создаешь новую ноду.
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
02.04.2018, 13:27 7
314251, определитесь для начала, что Вам требуется:
1) один список;
2) один массив структур;
3) массив адресов первых элементов списков.
Последнее подразумевает, что Вы хотите иметь 10 разных списков!
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 13:40  [ТС] 8
да, нужно 10 списков, когда я ввожу элемент в массив и его индекс, то помещаем элемент в этот индекс массива, но если он уже занят, то создаём список и помещаем туда новый элемент и элемент с массива под этим индексом, а потом адрес списка помещаем в индекс этого массива.

Добавлено через 8 минут
а как в Node поместить 2 элемента?
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
02.04.2018, 13:51 9
314251, со списками обычно не работают по индексу.
Можно, конечно. Но список - это не массив с произвольным доступом к любому элементу массива.
Например, ответьте, что будете делать, если зададите индекс, больший количества элементов списка?

Может быть, надо переносить в другой список (по другому индексу в массиве), если будет совпадение ключа-строки?
0
Заблокирован
02.04.2018, 13:53 10
Цитата Сообщение от 314251 Посмотреть сообщение
а как в Node поместить 2 элемента?
Никак. Это же список. В него ноды добавляются, а не данные в одну ноду.
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 13:56  [ТС] 11
индекс не будет больше 10

Добавлено через 52 секунды
я не знаю как сделать, но проблему я рассказал, может есть предложения как сделать правильно?
0
Заблокирован
02.04.2018, 14:02 12
Цитата Сообщение от 314251 Посмотреть сообщение
но проблему я рассказал
Сумбурно рассказал. Из этих пространных описаний нифига не понятно, что тебе хочется и что не получается. Вот добавление данных (не компилировал и не проверял. Что не так?
C++
1
2
3
4
5
6
7
8
9
10
11
Node* new_node = nullptr;
if (ListMas[index] == nullptr)
{
    new_node = ListMas[index] = new Node;
}
else
{
    for(Node* n = ListMas[index]; n->next != nullptr; n = n->next);
    new_node = n->next = new Node;
}
new_node->data = "data";
0
Эксперт CЭксперт С++
5113 / 4552 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
02.04.2018, 14:02 13
314251, для начала точно показать условие.
Если Вы не знаете, как сделать, мы и подавно.
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 14:16  [ТС] 14
ладно ещё раз, задача: нужно сделать как-то массив, в который можно было бы помещать адреса списков, всего в массиве 10 индексов и 10 списков, если индекс который я ввёл свободен, туда просто запихнуть элемент типа string если там уже если элемент, то создать список из этих элементов и как-то сделать так, чтоб через индекс я мог к этому списку обратиться

Добавлено через 1 минуту
не могу понять, как должен работать этот код
C++
1
2
3
4
5
6
7
8
9
10
11
Node* new_node = nullptr;
if (ListMas[index] == nullptr)
{
    new_node = ListMas[index] = new Node;
}
else
{
    for(Node* n = ListMas[index]; n->next != nullptr; n = n->next);
    new_node = n->next = new Node;
}
new_node->data = "data";
0
Заблокирован
02.04.2018, 14:18 15
Цитата Сообщение от 314251 Посмотреть сообщение
если индекс который я ввёл свободен, туда просто запихнуть элемент типа string
Куда? У тебя же массив списков а не стрингов. Сначала нужно создать ноду, а потом уже стрингу туда записывать.
Цитата Сообщение от 314251 Посмотреть сообщение
если там уже если элемент, то создать список из этих элементов
Если там уже есть элемент "нода". это и есть список. В таком случае, нужно в конец списка добавить новую ноду и туда уже писать стринг.
Добавлено через 17 секунд
Цитата Сообщение от 314251 Посмотреть сообщение
не могу понять, как должен работать этот код
Что именно не можешь понять?
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 14:21  [ТС] 16
да, вы правильно говорите, если там свободно, то создать ноду и поместить.
и если там есть нода, то да, нужно просто в конец списка добавить новую ноду.

вот мне нужно как-то это сделать.

конечно уже вас утомил, можно комментарии к коду, пожалуйста
0
Заблокирован
02.04.2018, 14:23 17
Цитата Сообщение от 314251 Посмотреть сообщение
вот мне нужно как-то это сделать.
Я привел пример кода, который именно это и делает.
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 14:23  [ТС] 18
C++
1
2
3
4
5
6
7
8
9
10
11
Node* new_node = nullptr;
            if (ListMas[val] == nullptr) //если пусто
            {
                new_node = ListMas[val] = new Node; // помещаем новый ноду
            }
            else
            {
                for (Node* n = ListMas[val]; n->next != nullptr; n = n->next) // если занято
                    new_node = n->next = new Node;  //добавляем в конец новую ноду
            }
            new_node->data = "data";
так?
0
Заблокирован
02.04.2018, 14:24 19
Цитата Сообщение от 314251 Посмотреть сообщение
можно комментарии к коду, пожалуйста
Извини, но попробуй разобраться сам. Здесь всего ничего строчек кода.

Добавлено через 48 секунд
Цитата Сообщение от 314251 Посмотреть сообщение
for (Node* n = ListMas[val]; n->next != nullptr; n = n->next) // если занято
Здесь цикл до последней ноды в списке.
А в общем, да, так примерно и должно работать.
0
0 / 0 / 0
Регистрация: 28.02.2016
Сообщений: 198
02.04.2018, 14:25  [ТС] 20
а N это мой элемент, который я ввожу?
0
02.04.2018, 14:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2018, 14:25
Помогаю со студенческими работами здесь

Найти среднее арифметическое отрицательных элементов списка и вставить его в список перед первым отрицательным элементом
Помогите,пожалуйста, написать программу Ввести неопределенное количество вещественных чисел и...

программа которая берет список и создает список другой из этого же списка + тот же список без последнего элемента
надо написать программу которая берет список и создает список другой из этого же списка + тот же...

Если первый и последний элементы списка-аргумента - символы, то сформировать список с первого и последнего элементов, иначе вернуть начальный список
Напишите, пожалуйста, функцию, которая для аргумента-списка формирует список-результат за правилом:...

Список: Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка?
Как добавлять элемент в список, не в начало и не в конец, а между 1 и 2 элементами списка? Вот...


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

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