Форум программистов, компьютерный форум CyberForum.ru

Объединение двух списков в один без повтора элементов (С++) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить матрицу по образцу http://www.cyberforum.ru/cpp-beginners/thread831736.html
помоги пожалуйста ,а то я совсем не разбираюсь
C++ выделение памяти Здравствуйте, помогите пожалуйста исправить ошибку, это лишь малая часть кода. В задании: поле name должно быть динамическим: char *name. Конструктор выделяет под него память, деструктор - освобождает. Мне нужна помощь в исправлении этой ошибки и в выделении/удалении памяти под name ( функции я напишу сам, просто помогите как правильно расписать, тоесть синтаксис ) . getName должен возвращать... http://www.cyberforum.ru/cpp-beginners/thread831730.html
C++ Поиск в файле и сортировка
Задача : Предусмотреть поиск животных по возрасту,кличке. Отсортировать в файле животных по породе. Проблема : Немогу ни как найти слова в файле...и вывод породы тоже не в лучшем состоянии... ////×åòâåðòàÿ ëàáàðàòîðíàÿ.//// #include <iostream> #include <string> #include <fstream> #include <stdio.h> #include <cstring> #include <windows.h> #include <winuser.h>
C++ Сортировка чисел с использованием файлов
Доброго времени суток. Не первый день уже пытаюсь завершить задание, да вот работа с файлами меня подводит. Суть задания такова: Ввести числа (я для этого использовал генератор) и записать их в файл. Реализовать две функции сортировки: пирамидальную и слиянием. Числа в функцию считать из файла, отсортировать, записать в файл (я сделал отдельный файл). #include <fstream> #include...
C++ Написать программу, которая находит в массиве значения, повторяющиеся два и более раз http://www.cyberforum.ru/cpp-beginners/thread831700.html
Помогите решить задачу. Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран. Массив состоит из 10 элементов, заполненный пользователем с клавиатуры. p.s. Как объявить и заполнить массив - сложностей не вызывает. Интересен сам алгоритм нахождения одинаковых чисел.
C++ сложение двух двоичных чисел Помогите разобраться со сложением двоичных чисел. Напишите алгоритм сложения двух двоичных чисел! подробнее

Показать сообщение отдельно
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
08.04.2013, 20:12     Объединение двух списков в один без повтора элементов (С++)
romka_f, вот вам мой вариант

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
// obr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <locale>
using namespace std;
 
struct List
{
    int data;
    List *next;
};
 
class ListNode
{
    private:
        List *Head;
 
    public:
        void operator+= (ListNode &list)
        {
            bool flag;
            List *tmp = list.Head;
 
            while(tmp != NULL)
            {
                List *tmp1 = Head;
                flag = false;
                while(tmp1 -> next!= NULL)
                {
                    if(tmp1 -> data == tmp -> data)
                    {
                        flag = true;
                        break;
                    }
 
                    tmp1 = tmp1 -> next;
                }
 
                if(flag == false)
                {
                    if(tmp1 -> data != tmp -> data)
                    {
                        List *cmp = new List;
                        cmp -> data = tmp -> data;
                        tmp1 -> next = cmp;
                        cmp -> next = NULL;
                    }
                }
 
                tmp = tmp -> next;
            }
        }
 
        ListNode()
        {
            Head = NULL;
        }
 
        void addToBack(const int value)                 //добавление в конец
        {
            List *Ptr = new List;
            Ptr -> data = value;
 
            if(Head == NULL)
            {
                Head = Ptr;
                Ptr -> next = NULL;
            }
            else
            {
                List *temp = Head;
 
                while(temp -> next != NULL)
                    temp = temp -> next;
                
                temp -> next = Ptr;
                Ptr -> next = NULL;
            }
        }
 
        void delList()
        {
            List *tmp = Head;
            List *cur = NULL;
 
            if(Head != NULL)
            {
                if(Head -> next == NULL)
                {
                    delete Head;
                    Head = NULL;
                }
                else
                {
                    while(tmp -> next != NULL)
                    {
                        cur = tmp;
                        tmp = tmp -> next;
                    }
 
                    cur -> next = NULL;
                    delete tmp;
                }
            }
        }
 
        void showList()
        {
            List *temp = Head;
 
            if(Head != NULL)
            {
                while(temp != NULL)
                {
                    cout << temp -> data << " ";
                    temp = temp -> next;
                }
            }
            else
                wcout << L"Список пуст!\n";
        }
};
 
void instructions();
void menu(ListNode &);
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));
    wcin.imbue(locale(".866"));
 
    ListNode list1, list2;
    menu(list1);
 
    menu(list2);
    
    //объединияем списки
    list1 += list2;
 
    //выведим новый список
    cout << "New List: ";
    list1.showList();
 
    cout << "\n\n";
    return 0;
}
 
void instructions()
{
    wcout << L"Выберите пункт меню: " <<
        L"\n1 - Добавить элемент в начало" <<
        L"\n2 - удалить элемент" <<
        L"\n3 - Выход.\n";
}
 
void menu(ListNode &Universal)
{
    int punkt_menu, value;
 
    instructions();
 
    do{
        wcout << L"\n? ";
            cin >> punkt_menu;
 
            switch(punkt_menu)
            {
                case 1:
                    wcout << L"Введите число: ";
                        cin >> value;
 
                    Universal.addToBack(value);
                    Universal.showList();
                    break;
                case 2:
                    Universal.delList();
                    Universal.showList();
                    break;
            }
 
    }while(punkt_menu != 3);
 
    cout << "\n";
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru