Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Вика666
0 / 0 / 0
Регистрация: 08.07.2017
Сообщений: 4
#1

Линейные односвязные списки, динамические массивы - C++

08.07.2017, 16:30. Просмотров 170. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста
Читая целые числа из текстового файла, создать линейный односвязный список добавлением нового элемента в конец списка.
Описать процедуру добавления одного или нескольких элементов в список.
1) Продублировать все нечетные элементы.

Описать процедуру удаления одного или нескольких элементов списка.
2)Удалить из списка все элементы со значением большим заданного значения.

Описать рекурсивную процедуру или функцию обработки списка.
3)Определить сумму значений всех элементов списка.

Описать рекурсивную процедуру или функцию обработки списка.
4)Удалить из списка все нечетные элементы.
http://www.cyberforum.ru/cpp-beginners/thread1634365.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2017, 16:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Линейные односвязные списки, динамические массивы (C++):

Односвязные линейные списки
Подскажите пожалуйста, как заменить содержимое файла перечнем символов,...

Односвязные линейные списки
Здравствуйте! Помогите пожалуйста. Даны текстовый файл и строка s. Группы...

Односвязные линейные списки
Помогите пожалуйста с задачей со списками, т.к вообще не могу в них...

Линейные Односвязные Списки С++
Разработать и реализовать программу создания и обработки линейного односвязного...

Односвязные линейные списки
Здравствуйте! Есть данная функция чтения данных и занесения их в создаваемый...

1
Геомеханик
784 / 591 / 937
Регистрация: 26.06.2015
Сообщений: 1,406
09.07.2017, 19:01 #2
Лучший ответ Сообщение было отмечено Вика666 как решение

Решение

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
#include <iostream>
#include <sstream>
#include <fstream>
 
struct node {
    node* next;
    int   val;
    node(int v):next(NULL), val(v){}
};
 
node* slist_load(std::istream& _in);
void  slist_print(std::ostream& _out, const node* ls);
void  slist_clear(node* ls);
void  slist_add_odd(node*& ls);
void  slist_del_greater(node*& ls, int v);
int   slist_sum(const node* ls);
void  slist_remove_odd(node*& ls);
 
int main(void){
    char s[] = "-7 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 10 12 11 2000 23";
    std::istringstream sp(s);
    node* ls = slist_load(sp);
 
/*  ввод из файла
    std::ifstream fp("file.txt");
    node* ls = slist_load(fp);
    fp.close();
*/
    //Продублировать все нечетные элементы
    slist_add_odd(ls);
    slist_print(std::cout, ls);
 
    //Удалить из списка все элементы со значением большим заданного значения
    int val = 5;
    slist_del_greater(ls, val);
    slist_print(std::cout, ls);
 
    //сумма списка
    std::cout << "slist sum: " << slist_sum(ls) << std::endl;
 
    //Удалить из списка все нечетные элементы
    slist_remove_odd(ls);
    slist_print(std::cout, ls);
    slist_clear(ls);
    std::cin.get();
    return 0;
}
 
//загрузка целых чисел из потока
node* slist_load(std::istream& _in){
    node* h = NULL, *t = NULL;
    int   v;
    while(_in >> v){
        if(h == NULL)
            h = t = new node(v);
        else 
            t = t->next = new node(v);
    }
    return h;
}
 
//Описать процедуру добавления одного или нескольких элементов в список. 
void slist_add_odd(node*& ls){
    node* q, *p = ls, *i = ls;
    while(i != NULL){
        if((i->val % 2) != 0){
            q = new node(i->val);
            if(i == ls){
                q->next = ls;
                ls = q;
            } else {
                p->next = q;
                q->next = i;
            }
        }
        p = i;
        i = i->next;
    }
}
 
//Описать процедуру удаления одного или нескольких элементов списка.  
void slist_del_greater(node*& ls, int v){
    node* t, *p = ls, *i = ls;
    while(i != NULL){
        if(i->val > v){
            if(i == ls)
                t = ls = ls->next;
            else
                t = p->next = i->next;
            delete i;
            i = t;
        } else {
            p = i;
            i = i->next;
        }
    }
}
 
//Определить сумму значений всех элементов списка(рекурсивно)
int slist_sum(const node* ls){
    return (ls != NULL) ? ls->val + slist_sum(ls->next) : 0;
}
 
//Удалить из списка все нечетные элементы(рекурсивно)
void slist_remove_odd(node*& ls){
    if(ls != NULL){
        if((ls->val % 2) != 0){
            node* t = ls;
            ls = ls->next;
            delete t;
            slist_remove_odd(ls);
        } else
            slist_remove_odd(ls->next);
    }
}
 
//печать
void slist_print(std::ostream& _out, const node* ls){
    for(; ls != NULL; ls = ls->next)
        _out << ls->val << ' ';
    _out << std::endl;
}
 
//удаление всех
void slist_clear(node* ls){
    node* t;
    while(ls != NULL){
        t  = ls;
        ls = ls->next;
        delete t;
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2017, 19:01
Привет! Вот еще темы с решениями:

Линейные односвязные списки. Вставка элемента
Добрый день! Никогда не была в ладах со списками, поэтому очень нужна помощь!...

Не могу написать код к задаче. Линейные односвязные списки
добавлением нового элемента в начало списка нужно удвоить в списке каждое...

Динамические структуры: односвязные и двусвязные списки
всем привет, мне нужно 2 задачи решить на эту тему,а информации нигде найти не...

Динамические структуры данных. Односвязные списки
Вот код. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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