Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построить матрицу по образцу http://www.cyberforum.ru/cpp-beginners/thread831736.html
помоги пожалуйста ,а то я совсем не разбираюсь
C++ выделение памяти Здравствуйте, помогите пожалуйста исправить ошибку, это лишь малая часть кода. В задании: поле name должно быть динамическим: char *name. Конструктор выделяет под него память, деструктор -... http://www.cyberforum.ru/cpp-beginners/thread831730.html
C++ Поиск в файле и сортировка
Задача : Предусмотреть поиск животных по возрасту,кличке. Отсортировать в файле животных по породе. Проблема : Немогу ни как найти слова в файле...и вывод породы тоже не в лучшем состоянии......
C++ Сортировка чисел с использованием файлов
Доброго времени суток. Не первый день уже пытаюсь завершить задание, да вот работа с файлами меня подводит. Суть задания такова: Ввести числа (я для этого использовал генератор) и записать их в...
C++ Написать программу, которая находит в массиве значения, повторяющиеся два и более раз http://www.cyberforum.ru/cpp-beginners/thread831700.html
Помогите решить задачу. Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран. Массив состоит из 10 элементов, заполненный...
C++ сложение двух двоичных чисел Помогите разобраться со сложением двоичных чисел. Напишите алгоритм сложения двух двоичных чисел! подробнее

Показать сообщение отдельно
yoghurt92
375 / 346 / 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";
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru