|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.04.2013, 18:27 | #1 |
Регистрация: 08.04.2013
Сообщений: 5
|
Объединение двух списков в один без повтора элементов (С++)
нужно дописать функцию, которая делает из двух списков один, в котором все элементы разные, то есть не повторяются. Спасибо!
#include <iostream> using namespace std; class Elem { public: int num; Elem *next; Elem (int n) { num = n; next = NULL; }; }; class List { protected: Elem *first, *last; public: Elem *current; public: List () { first = last = current = NULL; }; void add_element (int n); void delete_element (); int is_empty () { return (first == NULL); }; void start () { current = first; }; int end () { return (current == NULL); }; void next(){if (!end())current = current -> next;}; void print(); int* merge_lists(int* head1, int* head2); }; int main() { List l; List l2; int k; cout << "Введите элемент 1 списка (0,чтобы закончить):\n"; cin >> k; while (k!=0) { l.add_element (k); cout << "Введите элемент 1 списка (0,чтобы закончить):\n"; cin >> k; }; cout << "Введите элемент 2 списка (0,чтобы закончить):\n"; cin >> k; while (k!=0) { l2.add_element (k); cout << Введите элемент 2 списка (0,чтобы закончить):\n"; cin >> k; }; cout << "1 список: "; for (l.start(); !l.end(); l.next()) { cout << l.current->num << ' '; } cout << endl; cout << "2. список: "; for (l2.start(); !l2.end(); l2.next()) { cout << l2.current->num << ' '; } return 0; }; void List::add_element (int n) { Elem *p = new Elem (n); if (first == NULL) first = last = p; else last = last -> next = p; current =p; }; void List:elete_element () { Elem *p = first; if(!is_empty()) { if (current == first) current = first-> next; first = first -> next; delete p; if(is_empty())last = NULL; } }; void List:rint() { for(start(); !end(); next()) cout << current->num << endl; cout << endl; } int* List::merge_lists(int* head1, int* head2) { //ЧТО-ТО..... } |
08.04.2013, 18:46 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
0) Программный код на форуме оформляется тегом CODE.
1) Решение "в лоб": при добавлении каждого нового элемента в новосозданный, возвращаемый в качестве ответа список, проверять, нет ли его уже в этом списке. Но почему у Вас merge_lists принимает в качестве аргументов два указателя на int и возвращает указатель на int? |
08.04.2013, 18:59 | #3 |
Регистрация: 08.04.2013
Сообщений: 5
|
0) я просто первый раз тут, буду знать про этот тег
1) прототип функции накидал "от балды". Просто не очень понятно как вообще работает такая функция. Если не сложно, можете, пожалуйста накидать примерно саму функцию. Буду очень благодарен. |
08.04.2013, 21:22 | #4 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
А вот прототип (и заодно первую и последнюю строчки) - пожалуйста: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение двух массивов точек в один. | 3dWorld | Помощь студентам | 0 | 19.01.2011 14:43 |
Объединение двух файлов в один | kitty19 | Общие вопросы C/C++ | 4 | 15.12.2010 15:51 |
Объединение двух Tchart в один (Delphi) | Николай ПН | Помощь студентам | 5 | 18.03.2010 22:57 |
Генерировать массив без повтора значений элементов. На (С.) | Raptor | Помощь студентам | 5 | 17.12.2007 14:42 |