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

Написать функцию удаления четных элементов двусвязного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти названия книг заданного автора и вывести их на экран в порядке убывания года издания http://www.cyberforum.ru/cpp-beginners/thread972480.html
Дан массив записей, содержащий сведения о книгах: фамилия автора, название книги, год издания книги. Найти названия книг заданного автора и вывести их на экран в порядке убывания года издания #include "stdafx.h" #include<iostream> #include<conio.h> #include<locale> #include<string.h> using namespace std; const int L=100; struct book {char author;
C++ Разработать функцию, которая возвращает наименьшее общее кратное трех заданных натуральных чисел Разработать функцию, которая возвращает наименьшее общее кратное трех заданных натуральных чисел. http://www.cyberforum.ru/cpp-beginners/thread972476.html
C++ Ошибка в простейших строках
Я конечно ожидал увидеть тут ошибку, но не такую и не тут!!!! Сижу минут девять, а может и 15 тупо размышляю. Не понимаю!!Вот же загадка.. #include <string> #include <iostream> // для объекта cout using namespace std; int main() { ** int *pInt; ** *pInt = 9; ** cout << "The value at pInt: " << *pInt;
C++ Найти слова, встречающиеся в каждом предложении текста. Работа с файлом опять)
Дан файл, содержащий текст на русском языке. Найти слова, встречающиеся в каждом предложении текста или сообщить, что таких слов нету. Нашла программу (почти доделанную), немного переделала ( считывание из файла и запись в файл), Но ошибку исправить не могу. В общем если в файле написано: "мама мыла раму. окна мама тоже моет. мама устала", То слово "мама" программа находит. НО! если...
C++ Ввод/вывод txt http://www.cyberforum.ru/cpp-beginners/thread972432.html
Один местный форумчанин помог с написанием проги, которая открывает input.txt с двумерным массивом (матрицей), берет каждое число из нее, производит какое-нибудь действие над этим числом (в моем случае к каждому числу приписывается пятерка и цифра 1, например, становится цифрой 15, цифра 2 становится цифрой 25 и т.п.) и результат записывает в такую же матрицу уже в output.txt. Остался маленький...
C++ Нарисовать окружность программа рисует прямоугольник, треугольник и линию. Помогите пожалуйста доделать так чтобы она и окружность рисовала, с задающимися координатами центра и радиусом..сама в программирование не сильна, но надо сдать(( подробнее

Показать сообщение отдельно
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
08.10.2013, 22:15     Написать функцию удаления четных элементов двусвязного списка
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
#include<iostream>
using namespace std;
 
struct List
{
    List(int n) : iParam(n) {}
    int iParam;
    List* next;
    List* prev;
};
 
List *head, *tail;
 
void Add(List* temp) {
 
    if (head == 0)  // список пуст
    {
        temp->next = 0;
        temp->prev = 0;
        head = temp;
        tail = head;
    }
    else if (head == tail)   // список имеет один элемент
    {
        head->next = temp;
        temp->prev = head;
        temp->next = 0;
        tail = temp;
    }
    else {
        List* cur = head;
        bool is_find = false;
        while (cur != 0) {
            if (cur->iParam == temp->iParam) 
            {
                is_find = true;             
 
                temp->prev = cur->prev;
                temp->next = cur->prev->next;
                cur->prev->next = temp;
                cur->prev = temp;               
            }
            cur = cur->next;
        }
        if (!is_find) {  // если элемент не найден, то вставляем в конец
            tail->next = temp;
            temp->prev = tail;
            temp->next = 0;
            tail = temp;
        }
    }
}
 
void ShowList() {
    if (head == 0) {   // список пуст
        return;
    }
    List* cur = head;
    while (cur != 0) {
        printf("parametr int %i\n", cur->iParam);
        printf("\n");
        cur = cur->next;
    }
}
 
void Delete(List* val) {  // удаление одиночного элемента
    if (head == 0) {   // список пуст
        return;
    }
    List* cur = head;
    if (head == tail && head->iParam == val->iParam)  // в списке один элемент 
    {
        head->next = 0;
        head->prev = 0;
        head = 0;
        tail = head;
        return;
    }
 
    if (head->iParam == val->iParam)  // удаляется начальный элемент 
    {
        head = head->next;
        head->prev = 0;
        val->next = 0;
        val->prev = 0;
        return;
    }
 
    if (tail->iParam == val->iParam)  // удаляется конечный элемент элемент 
    {
        tail = tail->prev;
        tail->next = 0;
        val->next = 0;
        val->prev = 0;
        return;
    }
    while (cur != 0) {
        if (val != cur)
            cur = cur->next;
        else 
        {
            cur->prev->next = cur->next;
            cur->next->prev = cur->prev;
            break;
        }
    }
}
 
void Delete_even()  // удаление четных элементов
{
    if (head == 0) {   // список пуст
        return;
    }
    List* cur = head;
    while (cur != 0) {
        if (cur->iParam % 2 == 0)
            Delete(cur);
        cur = cur->next;
    }
}
 
int main()
{
    List a(5);
    List b(6);
    List c(7);
    List d(8);
    Add(&a); Add(&b); Add(&c); Add(&d);
    ShowList();
    Delete_even();
    ShowList();
    system("pause>0");
    return 0;
}
 
Текущее время: 22:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru