Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18

Удаление памяти для элементов списка

25.09.2016, 17:20. Показов 6093. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как удалить память для данного кода. Заранее спасибо

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
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
 
struct element // Узел списка
{
    int x; // Поле данных
    element *Next; // Указатель на следующий элемент
};
 
class List //Класс Список
{
    element *Head; //Указатель на последний активный элемент или просто голова списка
    public:
    List() {Head=NULL;} //Конструктор и инициализация указателя пустым значением
    ~List(); //Деструктор. Далее он вынесен за класс
    void Add(int x); //Функция для добавления значений в список
    void Show(); //Функция для отображения списка на экране
    void sort(); //Функция сортировки
};
 
List::~List() //Деструктор вынесен за класс
{
    while (Head!=NULL)  //Пока по адресу не пусто 
    {    
        element *temp=Head->Next; //Временная переменная для хранения адреса следующего элемента
        delete Head; //Освобождаем адрес, обозначающий начало
        Head=temp; //Меняем адрес на следующий
     }
}
 
void List::Add(int x) //Функция добавления элементов в список
{
    element *temp=new element; //При каждом вызове выделяется память
    temp->x=x; //Записываем x в элемент структуры  element (в x структуры element)
    temp->Next=Head; //Указываем, что след. элемент, - это объект по адресу Head
    Head=temp; //Указываем, что последний активный элемент - это только что введенный
}
 
void List::Show() //Функция отображения списка на экране
{
    element *temp=Head; //Определяем указатель, который изначально он равен адресу начала списка
    while (temp!=NULL) //До тех пор пока не встретит пустое значение
    {
        cout<<temp->x<<" "; //Выведет элемент x из списка
        temp=temp->Next; //Указываем, что далее нам нужен следующий элемент
    }
}
 
void List::sort() //Функция сортировки
{
    element *list = Head; // связанный список
    element *el1, *el2;
    for(el1 = list; el1; el1 = el1->Next )
        for(el2 = list; el2; el2 = el2->Next )
            if(el1->x < el2->x) // сортировка по возрастанию
            { 
                int i = el1->x;
                el1->x = el2->x;
                el2->x = i;
            }
}
 
 
 
void main()
{
    setlocale(LC_ALL, "Russian");
    int size_1,size_2, x;
    List lst, spis; 
    cout<<"Введите размерность 1-го списка: "; cin>>size_1; 
    for (int i=0;i<size_1;i++)
    {
        cout<<"x = "; cin>>x; //Ввод x с клавиатуры
        lst.Add(x); //Добавление элемента в начало списка
    }
    cout<<endl;
    cout<<"Введите размерность 2-го списка: "; cin>>size_2; 
    for (int i=0;i<size_2;i++)
    {
        cout<<"x = "; cin>>x; //Ввод x с клавиатуры
        spis.Add(x); //Добавление элемента в начало списка
    }
    cout<<endl;
    lst.Show(); cout<<endl;//Вывод списка на экран
    spis.Show(); cout<<endl;
    lst.sort(); spis.sort(); cout<<endl; //Сортировка списков
    lst.Show(); cout<<endl; //Вывод списка на экран
    spis.Show(); cout<<endl;
    getch();
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2016, 17:20
Ответы с готовыми решениями:

Удаление элементов из односвязного списка списка
Привет всем знатокам, суровым программистам и профессионалам своего дела. Засел за реализацией списка и что то пока не могу понять. Задача...

Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением)
Здравствуйте! Помогите написать программу, обеспечивающую работу с двунаправленным нециклическим списком: добавление/удаление элементов в...

освобождение памяти от элементов списка
подскажите как высвободить память,последняя часть проги,сама прога пашет,когда до высвобождения доходит,вылетает системная ошибка и...

6
12 / 12 / 7
Регистрация: 11.09.2016
Сообщений: 28
25.09.2016, 18:14
Что есть "удалять память"?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
26.09.2016, 10:07
Цитата Сообщение от erok Посмотреть сообщение
Что есть "удалять память"?
erok, скорее всего, имелось ввиду освобождение памяти.

Цитата Сообщение от Sheol Посмотреть сообщение
как удалить память для данного кода
Sheol, сломать планку оперативной памяти или процессор молотком стукнуть. Боюсь только, память будет удалена не только для Вашего кода, но и для любого другого тоже.
0
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
26.09.2016, 14:19  [ТС]
Да, вы правы, я имел в виду именно освобождение памяти.
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
26.09.2016, 14:28
Цитата Сообщение от Sheol Посмотреть сообщение
я имел в виду именно освобождение памяти.
А разве деструктор в коде не этим занимается?
P.S. И почему STL не использовать? Или это учебное задание?

Добавлено через 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
void main()
{
    setlocale(LC_ALL, "Russian");
    int size_1,size_2, x;
    List *lst=new List(), *spis=new List(); 
    cout<<"Введите размерность 1-го списка: "; cin>>size_1; 
    for (int i=0;i<size_1;i++)
    {
        cout<<"x = "; cin>>x; //Ввод x с клавиатуры
        lst->Add(x); //Добавление элемента в начало списка
    }
    cout<<endl;
    cout<<"Введите размерность 2-го списка: "; cin>>size_2; 
    for (int i=0;i<size_2;i++)
    {
        cout<<"x = "; cin>>x; //Ввод x с клавиатуры
        spis->Add(x); //Добавление элемента в начало списка
    }
    cout<<endl;
    lst->Show(); cout<<endl;//Вывод списка на экран
    spis->Show(); cout<<endl;
    lst->sort(); spis->sort(); cout<<endl; //Сортировка списков
    lst->Show(); cout<<endl; //Вывод списка на экран
    spis->Show(); cout<<endl;
 
    delete lst; delete spis; //Освобождение памяти
 
    getch();
}
Думаю требуется такое. С коленки
0
 Аватар для Punya
8 / 8 / 6
Регистрация: 05.10.2015
Сообщений: 20
26.09.2016, 14:30
Тоже хотел про деструктор спросить, чем не нравится, закончится работа main, сработает деструктор для каждого объекта List, память освободиться, единственное недавно встречался с проблемой присваивания указателю нового значения после того как к нему применили delete (объясните пожалуйста кто знает), поэтому цикл бы переписал на
C++
1
2
3
        element* temp = Head;
    Head = Head->next;
    delete temp;
0
0 / 0 / 0
Регистрация: 19.09.2015
Сообщений: 18
28.09.2016, 19:22  [ТС]
Да, уже понял, что сморозил глупость, потому что забыл про деструктор. Но спасибо за ответы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.09.2016, 19:22
Помогаю со студенческими работами здесь

Удаление элементов из списка
Даны числа n, m и список list&lt;n_vec&gt; l1 Как удалить из l1 элементы с n по m? n_vec - структура

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

Удаление элементов из списка
Подскажите как у

Удаление элементов из списка
Дан список L, состоящий из записей: первое поле – вещественное число, второе – адрес следующего элемента. Составить программу, которая...

Удаление элементов списка
Есть функция, которая перебирает все элементы списка и ищет позиции тех, что нужно удалить и удаляет, ориентируясь на значение, хранящееся...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru