Передача списка в функцию

Нужно написать функцию, которая работает одновременно с двумя списками. Как это правильно сделать? Список реализован как класс. Желательно коротенький примерчик, прототип подобной функции. Спасибо!
Добавлено через 19 минут
Ребята, мне просто в двух словах, как передать функции 2 списка, что бы можно было с ними нормально работать. Очень надеюсь на ответ
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Передача параметров в функцию (сортировка двусвязного списка)
Дан работающий код (двусвязный список+сортировка его пузырьком) Нужно выделенную часть оформить в.
Передача структуры (двусвязного списка в функцию»
#include<stdio.h> #include<iostream> #include<stdlib.h> using namespace std; struct spisok.
Передача списка в функцию
Подскажите пожалуйста как передать выбранные объекты в ну допустим в карзину это нажатие кнопки .

Передача среза списка в функцию
Привет. Ребят, всю голову сломал, не пойму почему не получается выполнит код, который передаю в.
Регистрация: 10.04.2013
Сообщений: 33
Передать указатели на начало списка, и потом с ним работать.
Регистрация: 08.04.2013
Сообщений: 15
Сообщение от igormalanyk 
Передать указатели на начало списка, и потом с ним работать.
Дело в том, что если передавать указатели на начало обоих списков, то как потом работать одновременно с двумя списками? Скажем, я передаю два указателя l1 и l2. Как тогда мне работать с такими указателями, как, например, current или next? Мне нужен список как таковой, а не начальный элемент
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
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
#include #include class Foo { public: std::listint> int_list; std::listchar> char_list; }; void Func_add(std::listint>& il, std::listchar>& cl) { il.insert(il.begin(), 10); cl.insert(cl.begin(), 'c'); } void Func_show(std::listint>::const_iterator ii, std::listchar>::const_iterator ci) { std::cout <*ii <' ' <*ci <'\n'; } int main() { Foo obj; Func_add(obj.int_list, obj.char_list); std::listint>::const_iterator int_iter= obj.int_list.begin(); std::listchar>::const_iterator char_iter = obj.char_list.begin(); Func_show(int_iter, char_iter); }
Добавлено через 2 минуты
Можно передать как итераторы так и ссылку на список.
Регистрация: 08.04.2013
Сообщений: 15
Всё равно, не получается, объясню на своём примере.
У меня есть список в виде класса List.
Мне нужно передать в функцию два списка и в функции их объединить в один.
Вот кусок кода:
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
class Elem { public: int num; Elem *next; Elem(int n) { num = n; next = NULL; }; }; // Klase List - saistîts vienvirziena saraksts class List { protected: Elem *first, *last; public: Elem *current; public: List () { first = last = current = NULL; }; //void add_element (int n); // pievieno beigâs void addToBack(const int value); void delete_element (); // izmet no sâkuma int is_empty () { return (first == NULL); }; void start () { current = first; }; int end () { return (current == NULL); }; void next(){if (!end())current = current -> next;}; void print(); Elem* merge_lists(/*КАК ПЕРЕДАТЬ ДВА СПИСКА СЮДА??*/); //. int main() { //. } Elem* List::merge_lists(/*КАК ПЕРЕДАТЬ ДВА СПИСКА СЮДА??*/) { List l3; l3.current=l3.first; for(l.start(); l.!end(); l.next()) { Elem *p = new Elem (l.current->num); if (l3.first == NULL) l3.first = l3.last = p; else l3.last = l3.last -> l3.next = p; l3.current =p; //. } }
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
Один список передаётся через указатель this (неявно), а второй как аргумент функции (в виде объекта класса). Т.е. фактически, нужно передать только ссылку или указатель на объект второго списка и добавить к первому второй в самой функции. Почитайте больше классах.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Clojure Написать функцию, для замены элементов списка y на соответствующие элементы списка x в списке w
Здравствуйте. Помогите написать функцию, осуществляющую замену элементов списка y на.
Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка.
Описать функцию, которая определяет, входят ли все элементы первого списка в состав второго списка.

Передача объекта в функцию или функцию друга
Здравствуйте, уважаемые программисты 🙂 К примеру есть такой код. #include <iostream> using.
Или воспользуйтесь поиском по форуму:
Передача list в качестве параметра функции
Я хочу передать неинициализированный list в качестве аргумента в функцию add , чтобы там его изменить. Что я делаю не так?
#include #include #include using namespace std; typedef struct < char author[30]; >SONG; void add( * b) < char a[30]; cin >> a; SONG singer; b.push_front(singer); /*тут я хочу получить массив и изменить его, но показывает ошибку*/ strcpy_s(singer.author, a); list::iterator it; it = b.begin(); b.insert(++it, singer); > int main() < list myList; cout > input; switch (input) < case 1: add(list&myList); /*вот тут хочу передать массив по ссылке*/ break; default: cout return 0; >
Отслеживать
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков
Как происходит передача списка в функцию через параметр?
Доброго времени суток, я давно бьюсь над задачей создания связного списка, и не получается добавлять элементы.
Суть в том, что функция добавления элемента работает правильно, но как только происходит выход из функции списка как-бы и нет.
И так:
Вот структура элемента:
struct Node < string word; Node* next; >;
Есть функция инициализации списка:
Node* init(string str) < Node* item = new Node; item->word = str; item->next = NULL; return item; >
Допустим список инициализирован(с ней проблем нет), и я хочу добавить новый элемент вызывая следующую функцию:
void AddNode(Node* pfirst, string str) < Node *tmp, *item = new Node; item->word = str; item->next = NULL; tmp = pfirst; while (tmp->next != NULL) tmp = tmp->next; tmp->next = item; delete tmp; >
Согласно отладчику:
Список передаётся в функцию и добавляется новый элемент, но после завершения этой функции список превращается в мусор.
Вот так выглядит Main:
int main() < Node* head = NULL; head = init("One"); AddNode(head, "Two"); PrintList(head); // Функция печати списка return 0; >
Собсна вопрос: при передачи списка в функцию — это тот же список или новый, который просто так не вернётся указателю head? Мне что, нужно возвращать список return’ом? Как это реализовать?
Весь код:
spoiler
struct Node < string word; Node* next; >; Node* init(string str) < Node* item = new Node; item->word = str; item->next = NULL; return item; > void AddNode(Node* pfirst, string str) < Node *tmp, *item = new Node; item->word = str; item->next = NULL; tmp = pfirst; while (tmp->next != NULL) tmp = tmp->next; tmp->next = item; delete tmp; > void PrintList(Node* pfirst) < Node* tmp = pfirst; while (true) < cout word next == NULL) break; tmp = tmp->next; > > int main()
Не предлагайте создание списка классом, мне нужно выполнить именно так. Спасибо!
- Вопрос задан более трёх лет назад
- 331 просмотр
C++ для начинающих: Как передать список в качестве параметра функции?
Я пытаюсь создать созданную пользователем функцию поиска для функции на уровне входа в C++. Функция должна принимать список и три целых числа, но она не распознает список. Я могу передать int[], но каждый раз, когда я даю ей имя, например, «int[] list», она отключает программу.
РЕДАКТИРОВАТЬ: Вот предупреждение, которое я получаю: ожидается ‘)’. Затем она переходит по именам переменных и говорит «первый не идентифицирован», «последний не идентифицирован» и т.д. Делал несколько ниндзя-редакций, чтобы показать больше кода здесь. Извините!
Я чувствую, что это очень элементарно для пользователей C++, но я не понимаю этого! Я не хочу использовать указатели в этой программе.
int binSearch(int[] first, int target, int first, int last) < int middle = (first + last) / 2; cout int main() < int list[10]; // creating sorted array cout cout > key; int index = binSearch(list, 10, key, 0, 10 - 1); >
Поделиться Источник 10 апреля 2019 в 21:04
1 ответ
В C++ массивы объявляются скобками после имени переменной:
int binSearch(int list[], int target, int first, int last)
Обратите внимание, что я также изменил первый параметр с first на list .