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

Работа с двумя списками - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ E2034 Cannot convert 'int *' to 'int' http://www.cyberforum.ru/cpp-beginners/thread516139.html
Помогите разобраться,почему вылазит ошибка Unit1.cpp(34): E2034 Cannot convert 'int' to 'int *' Unit1.cpp(34): E2342 Type mismatch in parameter 'm' (wanted 'int *', got 'int') С++ начал недавно изучать...поэтому часто возникают не понятные мне ошибки,а почему не понимаю) #pragma hdrstop
C++ Передача параметров функции по значению, ссылке и указателю Вычислить F=f(a)-5f^3(sin(b/2))+1/f(1+c^4), де f(x)=3x^2-2x^2+7, при a=5.08, b=-0.65, c=3.87 Добавлено через 45 минут #include "stdafx.h" #include "iostream" double f (doble x) {double p; p=3*pav(x,3)-2*pav(x,2)-7; return p;} http://www.cyberforum.ru/cpp-beginners/thread516135.html
C++ разложить натуральное число на сумму 9ти квадратов
Доброго времени суток. Решая олимпиадную задачу (о чем она можно догадаться в заголовке топика) у меня всплыла проблема с разложением чисел от 2 до 8ми включительно и числа 10. Остальные числа раскладываются корректно. Помогите решить проблему вот код: #include <iostream> using namespace std; int main() { int n; int a=0,b,c,d,e,f,g,h,i;
Вывести график функции, значения аргумента Х, значения функции Y в виде таблицы, max и min функции C++
Вывести график функции, значения аргумента Х, значения функции Y в виде таблицы, max и min функции: y= 10/(1+x*x) диапазон изменения аргумента, количество точек графика 30.
C++ Проверка баланса скобок http://www.cyberforum.ru/cpp-beginners/thread516102.html
Как задать условие в проверке баланса скобок, что если скобки окажутся НЕ пустыми, тое сть внутри них еще что-то будет (символы или числа), допустим , то что бы вывело NO (ну то есть баланс нарушен). Код для проверки баланса ТОЛЬКО скобок я написал. Не знаю, как исключить другие символы. Вот сама задача (если что-то не ясно) http://www.e-olimp.com/problems/2479 Вот мой код #include<stdio.h>...
C++ Структуры Подготовьте массив указателей на MARSH на 50 элементов. Считайте все записи из файла "2.dat" . Для чтения каждой отдельной записи осуществите динамический захват памяти. Соответствующий адрес храните в массиве указателей. Выполните сортировку данных по убыванию длины маршрута - причем сортировать потребуется только указатели в массиве. подробнее

Показать сообщение отдельно
Alex_Reilly
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 26

Работа с двумя списками - C++

11.03.2012, 16:49. Просмотров 374. Ответов 0
Метки (Все метки)

Суть задания: Два списка А и Б. У одного 5 чисел, у другого пять чисел. У первого:1,2,3,4,5. У второго:3,4,5,6,7. Нужно их вывести на экран. Потом из первого списка удалить числа, которые есть и у второго. Затем добавить к первому списку те числа списка Б, которых нету у А...Я сделал два списка, некоторые функции. Вот мой код. Но я не понимаю как их сравнить и при сравнении удалить элемент (функцию удаления написал), тоже самое по-поводу добавления. Помогите пожалуйтса
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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
struct Node
{
int d;
Node *next;
Node *prev;
};
//ОБЬЯВЛЕНИЕ ФУНКЦИЙ
Node *first(int d);
void add(Node **pend, int d);
Node *find(Node * const pbeg, int i);
bool remove(Node **pbeg, Node **pend, int key);
Node *insert(Node * const pbeg, Node **pend, int key, int d);
int main()
{
//СПИСОК А
Node *pbeg_01 = first(1); // Формирование первого элемента списка А
Node *pend_01 = pbeg_01; // Список заканчивается, едва начавшись
//СПИСОК Б
Node *pbeg_02 = first(3); // Формирование первого элемента списка А
Node *pend_02 = pbeg_02; // Список заканчивается, едва начавшись
//СОЗДАНИЕ СПИСКА А
// Добавление в конец списка четырех элементов 2, 3, 4, и 5:
for (int i = 2; i<6; i++)add(&pend_01, i);
Node *pv_01 = pbeg_01;
while (pv_01)
{ // вывод списка на экран
cout << pv_01->d <<" " ;
pv_01 = pv_01->next;
}
cout<<endl;
//СОЗДАНИЕ СПИСКА Б
// Добавление в конец списка четырех элементов 4, 5, 6 , и 7:
for (int i = 4; i<8; i++)add(&pend_02, i);
Node *pv_02 = pbeg_02;
while (pv_02)
{ // вывод списка на экран
cout << pv_02->d <<" " ;
pv_02 = pv_02->next;
}
 
system("pause");
return 0;
}
//ИНИЦИАЛИЗАЦИЯ ФУНКЦИЙ
// Формирование первого элемента
Node *first(int d)
    {
    Node *pv = new Node;
    pv->d = d; pv->next = 0; pv->prev = 0;
    return pv;
    }
// Добавление в конец списка
void add(Node **pend, int d)
    {
    Node *pv = new Node;
    pv->d = d; pv->next = 0; pv->prev = *pend;
    (*pend)->next = pv;
    *pend = pv;
    }
// Поиск элемента по ключу
Node * find(Node * const pbeg, int d)
    {
    Node *pv = pbeg;
    while (pv)
        {
        if(pv->d == d)break; pv = pv->next;
        }
    return pv;
    }
// Удаление элемента
bool remove(Node **pbeg, Node **pend, int key)
    {
    if(Node *pkey = find(*pbeg, key))
        { // 1
        if (pkey == *pbeg)
            { // 2
            *pbeg = (*pbeg)->next; (*pbeg)->prev = 0;
            }
            else if (pkey == *pend)
                { // 3
                *pend = (*pend)->prev; (*pend)->next =0;
                }
                else
                    { //4
                    (pkey->prev)->next = pkey->next;
                    (pkey->next)->prev = pkey->prev;
                    }
                    delete pkey;
                    return true;
        } //5
        return false;
    } //6
// Вставка элемента
Node * insert(Node * const pbeg, Node **pend, int key, int d)
    {
    if(Node *pkey = find(pbeg, key))
        {
        Node *pv = new Node;
        pv->d = d;
// 1 - установление связи нового узла с последующим:
        pv->next = pkey->next;
// 2 - установление связи нового узла с предыдущим:
        pv->prev = pkey;
// 3 - установление связи предыдущего узла с новым:
        pkey->next = pv;
//- Установление связи последующего узла с новым
        if( pkey != *pend) (pv->next)->prev = pv;
// Обновление указателя на конец списка.
// если узел вставляется в конец:
            else *pend = pv;
        return pv;
        }
return 0; 
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru