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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Указатель на функцию http://www.cyberforum.ru/cpp-beginners/thread791114.html
Нужно написать код, чтобы в нем был массив их трех указателей на функции #include<iostream> #include<locale> #include<cmath> using namespace std; double calculate(double,double,double (*p)(double,double)); double add(double,double); double dd(double,double); double d(double,double); int main()
C++ Округление при преобразовании типов данных Всем доброго времени суток может чего-то недочитал но сейчас столкнулся с потерей точности,кто в курсе подскажите:чем отличается такие преобразования : (int)0.5; и FloatToInt(0.5); и как проводится округление то есть 0,5 это 1 или 0. http://www.cyberforum.ru/cpp-beginners/thread791101.html
Циклы for, while, do while (найти сумму членов последовательности начиная с X0 до Xn) C++
дана последовательность Xn=(e^0.01n)*sin(0.01n). найти сумму членов последовательности начиная с X0 до Xn.
C++ Ошибка при использовании функции-члена
Доброго времени суток! При использовании функции-члена print() с объектом класса bin_image , созданом конструктором по умолчанию возникает ошибка: cpp.cpp:31:5: ошибка: запрос элемента «print» в «b2», имеющего не классовый тип «bin_image()» Однако, если использовать эту функцию с объектом, созданном конструктором со значением, всё проходит гладко. /*
C++ Умножение длинных чисел http://www.cyberforum.ru/cpp-beginners/thread791065.html
Найти произведение двух длинных чисел(целые числа, десятичная запись которых может содержать до 255 цифр). Нужно решить при помощи функций, без классов. Или подкиньте идею, а то не знаю как это реализовать.
C++ Циклическая форма перестановки массива Написать код программы формирования циклической формы перестановки любого массива. Помогите написать простейшую версию программы. Заранее большое спасибо. подробнее

Показать сообщение отдельно
Spb1337
-13 / 0 / 0
Регистрация: 24.09.2012
Сообщений: 13
21.02.2013, 15:42     Удалить из линейного списка элемент между двумя заданными
В общем написаны две функции, которые удаляют элемент "до найденного, и "после... их как-то красиво соединить надо, помогите пожалуйста..

Само задание "Удалить из линейного списка элемент между двумя заданными"

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
// Удаление элемента перед элементом find
void Before_Del ( char find )
{
    
    ELEM    *pprev,                 // Указатель на предпредыдущий элемент по отношению к заданному
        *del,               // Указатель на удаляемый элемент
        *cur;               // Указатель на текущий элемент
    if( start == NULL )
    {
        printf( "\n Список пуст. Нельзя найти нужный элемент ");
    }
    if( start->next == NULL )
    {
        printf( "\n В списке только один элемент. Нельзя выполнить данную операцию");
        return;
    }
        // Поиск элементов, содержащих символ find, с удалением элементов, предшествующих найденным
    pprev = NULL;
    cur = start->next;
    while( cur != NULL )
    {
        if( cur->ch == find )
        {   // Нужный элемент найден (он является текущим)
            // Найденный элемент является вторым в ЛС
        if( pprev == NULL )
        {
            // Будем удалять головной элемент
            del = start;
            // Первым элементом списка теперь будет бывший второй
            start = start->next;
        }
        else
        {
        // Указатель на удаляемый элемент
        del = pprev->next;
        // Связь предпредыдущего и текущего элементов
        pprev->next = del->next;
        }
        delete del;     // Удаление элемента
    }
    else
    {   // Продвижение указателя pprev требуется, если на очередном шаге не было удаления элемента
        if( pprev == NULL )
            pprev = start;
        else
            pprev = pprev->next;
    }
    cur = cur->next/    // Продвижение этого указателя требуется всегда
    }
    return;
}
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
// Удаление элемента после элемента find
void After Del( char find )
{
    ELEM    *del, // Указатель на удаляемый элемент
            *cur; // Указатель на текущий элемент
    if( start == NULL )
    {
    printf( "\n Список пуст. Нельзя найти нужный элемент");
    return;
    }
    if( start->next == NULL )
    {   
    printf ( "\n В списке только один элемент. Нельзя выполнить данную операцию");
    return;
    }
    // Поиск элементов, содержащих символ find, с удалением элементов, следующих за найденными
    cur = start;
    do
    {
    if( cur->ch == find )
    {   // Нужный элемент найден (он является текущем)
        // Указатель на элемент для удаления
        del = cur->next;
        // Связь текущего элемента с элементом, следующим за удаляемым
        cur->next = del->next;
        delete del;     // Удаление элемента
        // Является ли теперь текущей элемент последним? Если "да" - выход из цикла и функции
        if( cur->next == NULL )
        return;
    }
    cur = cur->next;    // Продвижение по списку
    } while( cur->next != NULL ) ;
return;
}

p.s. спасибо большое..

Добавлено через 3 часа 49 минут
up!

Добавлено через 10 часов 44 минуты
up!!

Добавлено через 4 часа 35 минут
up!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru