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

Удалить из списка L за каждым вхождением элемента Е один элемент - C++

Восстановить пароль Регистрация
 
gunslinger17
 Аватар для gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
28.04.2012, 15:31     Удалить из списка L за каждым вхождением элемента Е один элемент #1
1) Составить программу, которая удаляет из списка L за каждым вхождением элемента Е один элемент, если таковой имеется и он отличен от Е.
2) Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2012, 15:31     Удалить из списка L за каждым вхождением элемента Е один элемент
Посмотрите здесь:

C++ Удалить из списка за каждым вхождением элемента e один элемент
C++ Описать процедуру и функцию которая, удаляет из списка L за каждым вхождением элемента Е один элем если такой есть, и он отличен от Е
Вставить строку перед каждым вхождением символа. C++
C++ Вставить в список L за первым вхождением элемента Е все элементы списка L1
C++ Удалить из списка элемент перед каждым элементом со значением 3
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
28.04.2012, 17:15     Удалить из списка L за каждым вхождением элемента Е один элемент #2
где ваш список?
cyberdiem
 Аватар для cyberdiem
74 / 25 / 1
Регистрация: 15.02.2012
Сообщений: 97
28.04.2012, 18:27     Удалить из списка L за каждым вхождением элемента Е один элемент #3
на плюсах пишешь? stl использовать разрешили?
gunslinger17
 Аватар для gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
28.04.2012, 18:52  [ТС]     Удалить из списка L за каждым вхождением элемента Е один элемент #4
Цитата Сообщение от cyberdiem Посмотреть сообщение
на плюсах пишешь? stl использовать разрешили?
Вообще на Си, компилятор С++.
Цитата Сообщение от panicwassano Посмотреть сообщение
где ваш список?
Список произвольно можно задать.
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
28.04.2012, 19:12     Удалить из списка L за каждым вхождением элемента Е один элемент #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1
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
#include <iostream>
#define forn(a,i,b) for(int i=a; i<b; i++)
 
using namespace std;
 
struct Node
{
    int a;
    Node* next;
};
 
void add(Node *&list, int a)
{
    Node* tmp = new Node;
    tmp -> a = a;
    tmp -> next = list;
    list = tmp;
}
 
void printList(Node* n)
{
    if (n == 0)
        cout << "end\n";
    else
    {
        cout << n -> a << ", ";
        printList(n -> next);
    }
}
 
void mkList(Node *&n)
{
    int qty;
    cin >> qty;
    int tmp;
    forn(0,i,qty)
    {
        cin >> tmp;
        add(n,tmp);
    }
}
 
void delList(Node* n)
{
    if (n == 0)
        return;
    delList(n -> next);
    delete n;
}
 
void delOne(Node*&,int);
void delNext(Node *&n, int el)
{
    if (n == 0)
        return;
    if (n -> a == el)
        delNext(n -> next,el);
    Node* tmp = n -> next;
    delete n;
    n = tmp;
    delOne(n,el);
}
 
void delOne(Node *&n, int el)
{
    if (n == 0)
        return;
    if (el == n -> a)
        delNext(n -> next,el);
    else
        delOne(n -> next, el);
}
 
int main(int argc, char **argv)
{
    Node* l = 0;
    mkList(l);
    printList(l);
    int n;
    cin >> n;
    delOne(l,n);
    printList(l);
    delList(l);
    return 0;
}
Добавлено через 10 минут
2
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
#include <iostream>
#define forn(a,i,b) for(int i=a; i<b; i++)
 
using namespace std;
 
struct Node
{
    int a;
    Node* next;
};
 
void add(Node *&list, int a)
{
    Node* tmp = new Node;
    tmp -> a = a;
    tmp -> next = list;
    list = tmp;
}
 
void printList(Node* n)
{
    if (n == 0)
        cout << "end\n";
    else
    {
        cout << n -> a << ", ";
        printList(n -> next);
    }
}
 
void mkList(Node *&n)
{
    int qty;
    cin >> qty;
    int tmp;
    forn(0,i,qty)
    {
        cin >> tmp;
        add(n,tmp);
    }
}
 
void delList(Node* n)
{
    if (n == 0)
        return;
    delList(n -> next);
    delete n;
}
 
bool isAt(Node* n, int a)
{
    if (n == 0)
        return 0;
    return (n -> a == a)? 1: isAt(n -> next, a);
}
 
Node* mkRes(Node* l1, Node* l2)
{
    if (l1 == 0)
        return 0;
    if (isAt(l1 -> next, l1 -> a) || isAt(l2,l1 -> a))
        return mkRes(l1 -> next, l2);
    Node* tmp = new Node;
    tmp -> a = l1 -> a;
    tmp -> next = mkRes(l1 -> next, l2);
    return tmp;
}
 
int main(int argc, char **argv)
{
    Node* l1 = 0;
    Node* l2 = 0;
    mkList(l1);
    printList(l1);
    mkList(l2);
    printList(l2);
    Node* lres = mkRes(l1,l2);
    printList(lres);
    delList(l1);
    delList(l2);
    delList(lres);
    return 0;
}
gunslinger17
 Аватар для gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
28.04.2012, 19:17  [ТС]     Удалить из списка L за каждым вхождением элемента Е один элемент #6
Algiz, премного благодарен
Пошел разбираться
Yandex
Объявления
28.04.2012, 19:17     Удалить из списка L за каждым вхождением элемента Е один элемент
Ответ Создать тему
Опции темы

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