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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
#1

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

28.04.2012, 15:31. Просмотров 897. Ответов 5
Метки нет (Все метки)

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

Удалить из списка за каждым вхождением элемента e один элемент - C++
Помогите пожалуйста решить задачу.заранее спасибо - Составить программу, которая удаляет из списка за каждым хождением элемента e один...

Описать процедуру и функцию которая, удаляет из списка L за каждым вхождением элемента Е один элем если такой есть, и он отличен от Е - C++
помогите пожалуйста очень нужно я в С++ очень плохо разбираюсь

Динамические структуры данных. Сформировать динамический список, описать функцию, которая удаляет из списка за каждым вхождением элемента Е - C++
Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. Описать функцию, которая...

Удалить из списка элемент перед каждым элементом со значением 3 - C++
Удалить из списка элемент перед каждым элементом со значением 3. Добавлено через 8 часов 12 минут Создать циклический...

Вставить в список L за первым вхождением элемента Е все элементы списка L1 - C++
Помогите пожалуйста с заданием "Вставить в список L за первым вхождением элемента Е все элементы списка L1.":)

Удалить из списка элемент, стоящий после элемента на который указывает пользователь - C++
Нужно удалить из списка элемент, стоящий после элемента на который указывает пользователь, подскажите пожалуйста, как это сделать ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
28.04.2012, 17:15     Удалить из списка L за каждым вхождением элемента Е один элемент #2
где ваш список?
cyberdiem
74 / 25 / 1
Регистрация: 15.02.2012
Сообщений: 97
28.04.2012, 18:27     Удалить из списка L за каждым вхождением элемента Е один элемент #3
на плюсах пишешь? stl использовать разрешили?
gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
28.04.2012, 18:52  [ТС]     Удалить из списка L за каждым вхождением элемента Е один элемент #4
Цитата Сообщение от cyberdiem Посмотреть сообщение
на плюсах пишешь? stl использовать разрешили?
Вообще на Си, компилятор С++.
Цитата Сообщение от panicwassano Посмотреть сообщение
где ваш список?
Список произвольно можно задать.
Algiz
160 / 160 / 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2012, 19:17     Удалить из списка L за каждым вхождением элемента Е один элемент
Еще ссылки по теме:

Поменять местами два элемента двусвязного списка и удалить из него указанный элемент - C++
Дан двусвязный список. Требуется напечатать исходный список. Поменять местами два элемента списка путём перецепления ссылок на узлы списка,...

Односвязный список (за первым вхождением элемента с заданным значением z добавить все элементы списка В) - C++
Дан непустой лин.односвяз список А в список А за первым вхождением элемента с заданным значением z добавить все элементы списка В.

Составить программу, которая вставляет в список L новый элемент F перед первым вхождением элемента Е - C++
на с++. Составить программу, которая вставляет в список L но¬вый элемент F перед первым вхождением элемента Е, если Е входит в L.

Вставить строку перед каждым вхождением символа. - C++
Дан символ С и строки S,S0. Перед каждым вхождением символа С в строку S вставить строку S0.

Вставить строку перед каждым вхождением заданного символа - C++
Даны строки S1, S2 и символ C. Перед каждым вхождением символа C в строку S1 вставить строку S2. Добавлено через 8 минут решено

Автоматная грамматика - проверить, за каждым ли вхождением пары 11 следует 0? - C++
Суть задания такова: есть цепочка из 1 и 0. Проверить: за каждым вхождение пары 11 следует 0? задание готовое, но не принимают потому что...


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

Или воспользуйтесь поиском по форуму:
gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
28.04.2012, 19:17  [ТС]     Удалить из списка L за каждым вхождением элемента Е один элемент #6
Algiz, премного благодарен
Пошел разбираться
Yandex
Объявления
28.04.2012, 19:17     Удалить из списка L за каждым вхождением элемента Е один элемент
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru