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

Динамические списки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ пространство имен http://www.cyberforum.ru/cpp-beginners/thread200568.html
Добрый день, знаю что пространство имен делит на части области видимости, а оператор using включает член пространства/все пространство в глобальное пространство. Объяснять ненадо как это работает с точки зрения С++, интересует сама реализация компилятором - 1. что делает компилятор после включения дериктивы например using std::cout как он заносит cout в глобальное пространство имен, то есть как...
C++ лаб 7 Памагите пожалуста Загальні умови: 1. Оголосити двовимірний масив array типу int. 2. Заповнити масив з клавіатури. 3. Вивести результати обчислень на екран. 4. Зобразити схему програми. 1. Порахувати кількість елементів масиву, які знаходяться в заданому з клавіатури діапазоні. Якщо таких елементів більше половини замінити їх одиницями. 2. Обчислити кількість парних чисел масиву. http://www.cyberforum.ru/cpp-beginners/thread200563.html
C++ Добавить К элементов в массив, начиная с номера N
Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. Добавить К элементов, начиная с номера N. На примере этого: Удалить элемент с заданным номером: Код C++ #include <iostream.h> #include<conio.h>
C++ Узнать какая последовательность периодическая, и найти ее период
Уважаемые программисты у меня проблема с задачами которые для меня являются еще очень сложными. Выручите пожалуйста;). Так не охота вылитать с универа. Вот те злосчастные задачи: 1. Задана квадратная матрица порядка n. Обнулить все елементы, сума индексов которых есть парным числом. 2. В каждой из 9 клеток квадрата 3 х 3 пороставлять числа 1,2,3 так, чтоб суммы чисел в каждой горизонтальной...
C++ Поиск количества столбцов матрицы, содержащих больше трех положительных элементов http://www.cyberforum.ru/cpp-beginners/thread200548.html
Помогите пожалуйста с написанием кода. Дан двумерный массив, размерность массива и элементы вводятся вручную. Я не знаю как реализовать поиск количество столбцов, содержащих больше трех положительных элементов.
C++ Ввести значения элементов массива, поменять местами min/max элементы Помогите пожалуйста, нада написать программу которая позволяет ввести 10 елементов одного массива, результат выводилоб на екран,также изменяло найбольшее и найменьшеге значения массива местами на языке С. Зарание спасибо. подробнее

Показать сообщение отдельно
fantaz1
 Аватар для fantaz1
33 / 25 / 1
Регистрация: 08.11.2008
Сообщений: 107
30.11.2010, 12:07     Динамические списки
Пишу курсовую работу про динамические списки, и хотелось узнать мнение специалистов про мою функцию удаления элемента со списка.. Прост первый раз встретился с этими списками, и почему то мне кажится что сильно громоздкая моя функция, нельзя ее как нибуть упростить, или по другому удалять заданый элемент?
Вот моя структура списка
C++
1
2
3
4
5
6
struct  NumbersStruct
{
    int data;
    NumbersStruct *next;
    NumbersStruct *previous;
};
Вот сама функция:
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
NumbersStruct* DeleteItem(NumbersStruct *numbers)        //Передаем в функцию элемент который нужно удалить
{       
    NumbersStruct *del = numbers;
    NumbersStruct *ret;
 
    if(numbers->previous && numbers->next)
    {
        numbers->previous->next = numbers->next;
        numbers->next->previous = numbers->previous;
        ret = numbers->previous;
    }
    else if(!numbers->previous)                //Проверяем, первый ли он в списке
    {   
        del = numbers->next;
        if(numbers->next->next)      //Проверяем, единственый ли он в списке
        {
            numbers->data = numbers->next->data;
            numbers->next = numbers->next->next;    
            numbers->next->previous = numbers;
        }
        else
        {
            numbers->data = 0;
            numbers->next = 0;
        }
        ret = numbers;
    }
    else                                                      //Или последний
    {       
        numbers->previous->next = numbers->next;
        numbers->next->previous = numbers->previous;
        numbers->next->next = 0;
        ret = numbers->previous;
    }
 
    delete del;
 
    return ret;
}
И вот пример использования этой функции (удалить элементы которые содержат введенное число):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void DeleteThisNumber(NumbersStruct *numbers)//Передаем сюда первый элемент списка
{
    system("cls");
 
    wcout<<L"Введите число: ";
    int num;
    cin>>num;
 
    while(numbers->next)
    {       
        if(numbers->data == num)
        {
            numbers = DeleteItem(numbers);
        }
        numbers = numbers->next;
    }
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru