Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление последнего элемента из списка https://www.cyberforum.ru/ cpp-beginners/ thread1917069.html
Всем добрый день! Задача такая, добавить элемент в начало списка, и удалить последний элемент из списка Добавить получилось, удалить нет. Вот код #include <iostream> #include <time.h> using...
Функция удаления строки с номером к из списка C++
Хелп , заранее спасибо
C++ Вычисление значений функции разложением в ряд Тейлора https://www.cyberforum.ru/ cpp-beginners/ thread1917045.html
Дано вещественное число X (|X| < 1) и целое число N > 0. Написать функцию для вычисления суммы Σ = x - x2/2 + x3/3 - ... + (-1)N-1xN/N. Полученное число является приближенным значением функции...
C++ Структуры. Вычислить лучшего нападающего футболиста посредством сравнения значений ratio Структуры. Вычислить лучшего нападающего футболиста посредством сравнения значений ratio. Как сделать чтобы коэффициент - ratio вычислялся точнее ? Как сделать точнее таблицу, с перегородками между... https://www.cyberforum.ru/ cpp-beginners/ thread1917042.html
Как выполнить эту программу через процедуру? C++
Дано вещественное число X (|X| < 1) и целое число N > 0. Написать функцию для вычисления суммы Σ = x - x2/2 + x3/3 - ... + (-1)N-1xN/N. Полученное число является приближенным значением функции...
C++ Программа из методички Задали д/з. По типу программы из методички написать свою, по своему варианту. Я перепечатала программу из методички ии.. куча ошибок, половину команд не понимает. Помогите, может какой заголовочный... https://www.cyberforum.ru/ cpp-beginners/ thread1917026.html
C++ Попадание точки в заштрихованную область https://www.cyberforum.ru/ cpp-beginners/ thread1917023.html
Написать программу, которая определяет, попадает ли точка с заданными координатами в область, закрашенную на рисунке серым цветом. Результат работы программы вывести в виде текстового сообщения
C++ Как разобраться ,что в этом коде за что отвечает?
#include <iostream> #include <ctime> using namespace std; int main () { srand(time(NULL)); unsigned const int n=4, m=10; int k, arr, sum=0, res=1; cout << "array:" << endl; ...
C++ Не получается присвоить значение элементу массива указателей типа char *a[3] В попытках разобраться с массивами, указателями, массивами указателей и т.п. написал вот такой код: int main() { char *a = { "abcde", "xyz", "QWERTY" }; char b = { "abcde", "xyz", "QWERTY" };... https://www.cyberforum.ru/ cpp-beginners/ thread1916996.html C++ Дана последовательность, состоящая из N целых чисел. Найти и вывести полученные результаты: https://www.cyberforum.ru/ cpp-beginners/ thread1916981.html
1. величину K=S3/S5 , где S3 – сумма чисел, кратных 3, S5– сумма чисел, кратных 5; 2. максимальное значение элементов по абсолютной величине; 3. сформировать новую последовательность, состоящую из...
C++ Дана последовательность, состоящая из N целых чисел. Найти и вывести полученные результаты:
1. величину K=S3/S5, где S3 – сумма чисел, кратных 3, S5– сумма чисел, кратных 5; 2. максимальное значение элементов по абсолютной величине; 3. сформировать новую последовательность, состоящую из...
C++ Не ясен синтаксис в коде https://www.cyberforum.ru/ cpp-beginners/ thread1916965.html
Доброго времени суток! LPVOID buffer = malloc( siz + 1 ); // создали буфер Далее сама проблема &( ( char* )buffer ) 1)Преобразуем в указатель на char ( char* )buffer 2)Получаем...
0 / 0 / 0
Регистрация: 11.02.2015
Сообщений: 47
0

Удаление последнего элемента из списка - C++ - Ответ 10098428

10.02.2017, 13:28. Показов 3795. Ответов 3
Метки (Все метки)

Добрый день!
Проблема такая, удаляя последний элемент из списка, выдает ошибку
Помогите разобраться!
Спасибо

Код программы


#include <iostream>
#include <time.h>
using namespace std;

//описываем структуру, которая будет элементом списка
struct NODE{
double info; //информационное поле
struct NODE* next; //указатель на следующий элемент списка
};

NODE* first = NULL; //голова списка
NODE* last = NULL; //и хвост

//функция вывода списка
void print_list()
{
NODE* current = first; //становимся на первый элемент
cout << "List elements:\n";
if (!current) cout << "List is empty!\n";
while (current)// Пока указатель на элемент current не равен NULL
{
cout << current->info << " "; //Обрабатываем текущий элемент
current = current->next; //Перемещаемся к следующему элементу
}
}

//функция добавления элемента в конец списка
void add_element()
{

NODE* current = new NODE;//Выделение места в памяти под новый элемент
double x = (rand() % 10) / 10.0;
current->info = x; //Установка значения элемента
current->next = NULL;
//если список пустой
if (!first)
{
first = current;//установить созданный элемент в качестве первого
}
else last->next = current; //установить поле next последнего элемента списка на указатель на новый элемент
last = current; //новый элемент устанавливается в качестве последнего
}

//функция создания списка
void make_list()
{
int n;
cout << "Input count of list's elements:";
cin >> n;
for (int i = 0; i<n; i++)
{
add_element();
}
}

//функция поиска элемента в списке
void findX()
{
if (!first) return;
int i = 1;
NODE* current = first;
double x;
cout << "\nInput X:";
cin >> x;
while (current)
{
if (current->info == x)
{
cout << i << " ";
}
current = current->next;
i++;
}
}

//функция полного удаления списка
void del_list()
{
while (first)
{
NODE* current = first; //Присвоить адрес первого элемента списка вспомогательному указателю
first = current->next;//Указателю на первый элемент присвоить указатель на второй элемент
delete current; //Освободить память, на которую указывает вспомогательный указатель
}
}
void add_element_start(){
NODE* current = new NODE;//Выделение места в памяти под новый элемент
double x = (rand() % 10) / 10.0;
current->info = x; //Установка значения элемента
current->next = NULL;
//если список пустой
if (first == NULL)
current->next=NULL;

else{
current->next = first;
first = current;
}

}
/* удаление последнего элемента*/

void del_element_end()
{
NODE* current = first; //Присвоить адрес первого
while(current->next)
{
current = current->next;
}

delete last;
last = current;
}

//а вот и главная программа
void main()
{
srand(time(NULL));
cout << "\n";
make_list();// создать лист
cout << "\n";
print_list();// печать лист
cout << "\n";
findX();//функция поиска элемента в списке
//del_list();// удалить лист
//make_list();
add_element_start();// добовление элемента в начало списка
//add_element();
//make_list();//функция создания списка
print_list();
del_list();// удалить лист
cout << "\n";
system("pause");//ожидаем...
}


при выполнении del_element_end() последний элемент отображается 2,682254565е +328 и ошибка.
Помогите, что не так?

Вернуться к обсуждению:
Удаление последнего элемента из списка C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2017, 13:28
Готовые ответы и решения:

Удаление последнего элемента из списка
Есть функция void List::DeleteElement(void) { Element *vsp; if (!begin) { cout &lt;&lt; &quot;Is...

Удаление последнего элемента списка
А вот когда удаляешь последний элемент списка, обязательно в предпоследнем присваивать указатель...

Удаление последнего элемента односвязного списка
как сделать в списке pop_back и полное очищение? struct Node { int value; Node* next;...

Как сделать удаление последнего элемента списка ?
Помогите написать функцию удаления последнего элемента списка.

3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2017, 13:28

Удаление последнего элемента из однонаправленного линейного списка
Здравствуйте, удаляю значится элемент: (x - порядковый номер удаляемого элемента, начиная с 1....

Удаление последнего введенного элемента из списка (стека)
Напишите пожалуйста программу для удаления последнего введенного элемента из списка (стеку)

Удаление последнего элемента Дека
Все работает, кроме удаления последнего элемента. Подскажите пожалуйста, что не так? #include...

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

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