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

Удалить из списка s все элементы больше k - C++

Восстановить пароль Регистрация
 
Vova_Sim
2 / 2 / 0
Регистрация: 07.11.2012
Сообщений: 50
29.04.2014, 22:09     Удалить из списка s все элементы больше k #1
Функция
C++
1
void odn(iter *, iter *);
выполняет "Из списков s1 и s2 удалить все элементы с одинаковым содержимым.". Помоги сделать так что бы она выполняла следующее "Удалить из списка s все элементы с значением содержимого, превышающим заданное число k."
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
# include<iostream>
using namespace std;
class spisok
{
private:
    int x;
    spisok *prev;
    spisok *fr;
public:
    void first()
    {
        cout << "x = ";
        (cin >> x).get();
        fr = NULL;
        prev = NULL;
    }
    ~spisok()
    {
        cout << "Элемент был удален.\n";
    }
    void push(spisok *);//Функция вставки элемента
    void put_el(spisok *);//Просмотр доступного элемента
    void prov(spisok *);//Проверка наличия елементов
    void per(spisok *);//Функция перехода в начало списка
};
void spisok::push(spisok *P)
{
    while (P->prev != NULL)
        P = P->prev;
    int a;
    cout << "x = ";
    (cin >> a).get();
    while (a>P->x)
    {
        cout << "\nЭлемент введен неверно.";
        cout << "x = ";
        cin.clear();
        (cin >> a).get();
    }
    spisok *ST = new spisok;
    ST->x = a;
    P->prev = ST;
    ST->fr = P;
    ST->prev = NULL;
}
void spisok::put_el(spisok *P)
{
    cout << "Доступный элемент:\n";
    cout << "x = " << P->x << endl;
}
void spisok::prov(spisok *P)
{
    if (P->prev = NULL) cout << "\nСписок содержит 1 элемент";
    else cout << "Список содержит более одного элемента\n";
}
void spisok::per(spisok *P)
{
    P = P->fr;
}
class iter:public spisok
{
private:
    int x;
    iter *prev;
public:
    void sled(iter *);//Функция перехода к следующиму элементу
    void tek(iter *);//функция выдачи текущего адреса
    iter* del(iter *);//Функция удаления элемента
    void odn(iter *, iter *);
};
iter* iter::del(iter *P)
{
    iter *ST = P->prev;
    delete P;
    return ST;
}
void iter::sled(iter *P)
{
    P = P->prev;
}
void iter::tek(iter *P)
{
    cout << "Адрес текущего элемента:" << P<<endl;
}
void iter::odn(iter *P, iter *D)
{
    iter *P1, *D1, *S;
    P1 = P; D1 = D;
    while (P1->prev != NULL)
    {
        while (D1->prev != NULL)
        {
            if (P1->x = D1->x) 
            {
                S = P1;
                if (P1->prev != NULL)P1 = P1->prev;
                delete S;
                S = D1;
                if (D1->prev != NULL) D1 = D1->prev;
                delete S;
            }
            else if (P1->prev != NULL) P1 = P1->prev;
        }
        if (D1->prev != NULL) D1 = D1->prev;
    }
}
void main()
{
    setlocale(LC_ALL, "RUS");
    cout << "Ввод первого элемента.\n";
    iter *P = new iter;
    P->first();
    cout << "Для добавления элемента списка введите 1\n"
        "Для удаления элемента списка введите 2\n"
        "Для просмотра доступного элемента списка введите 3\n"
        "Для перехода к следующиму элементу введите 4\n"
        "Для выдачи текущего адреса введите 5\n"
        "Для проверки наличия элементов списка введите 6\n";
    int a;
    cout << "Ввод: ";
    (cin >> a).get();
    while (a != 0)
    {
        switch (a)
        {
        case 1:P->push(P); break;
        case 2:P=P->del(P); break;
        case 3:P->put_el(P); break;
        case 4:P->prov(P); break;
        case 5:P->tek(P); break;
        case 6:P->sled(P); break;
        default: break;
        }
        cout << "Ввод: ";
        (cin >> a).get();
    }
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2014, 22:09     Удалить из списка s все элементы больше k
Посмотрите здесь:

C++ Из заданного массива целых чисел, который представлен в виде связанного списка, удалить все нулевые элементы, если они существуют
Если все элементы «двусвязного списка» отрицательны, то удалить элемент «стека» C++
C++ Удалить из списка все элементы с нечётными значениями и вывести указатель p2 на начало преобразованного списка.
Создать список из целых чисел. Найти минимальный элемент и удалить из списка все элементы равные минимальному C++
C++ Удалить из списка все элементы с четными информационными полями
C++ удвоить вхождение каждого элемента списка. Элементы, какие входят в список больше двух раз изъять(удалить)
Удалить из списка все элементы, заканчивающиеся на цифру 2 C++
C++ Удалить из списка все элементы, заканчивающиеся на цифру 2

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 21:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru