Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2018, 18:40   #1
Ko1iN
Новичок
Джуниор
 
Регистрация: 08.01.2018
Сообщений: 1
По умолчанию Удаление элементов из списка

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

Цитата:
#include <iostream>
#include <list>
#include <stdio.h>
#include <Windows.h>
#include <cstdlib>

using namespace std;

struct List
{
double a;
List *next;

List* Read(List *L) //Запись элементов в список
{
List *a = new List;
a->next = NULL;
cout << "Введите элемент: ";
cin >> a->a;
if (L == NULL)
{
L = a;
}
else
{
List *c = L;
while (c->next != NULL) c = c->next;
c->next = a;
}
return L;
}

void Delete(int p, List *&L) // Удаление элементов из списка по их позиции
{
List*& a = L;
List* b = a->next;
if (p == 1) {
a = a->next;
cout << "Элемент удален" << endl;
}
else{

while (p>2)
{
p--;
a = a->next;
b = b->next;
if (b == NULL) break;
}
if (b != NULL) {
a->next = b->next;
cout << "Элемент удален" << endl;
}
else cout << "Такой позиции нет" << endl;
}
}
};

void Printlist(List *L)
{
cout<<"\nВаш список: ";
while (L != NULL)
{
cout << L->a << " ";
L = L->next;
}
cout << endl;
}

void menu(List *L)
{
int choice;
do
{

cout << "\nВыберите необходимое действие:\n1-Ввод элементов в список\n2-Удаление элементов списка\n3-Вывод списка\n" << endl;
cin >> choice;
switch (choice)
{
case 1:
L = Read(L);
break;

case 2:
int p;
cout << "Введите p: ";
cin >> p;
Delete(p, L);
break;

case 3:

Printlist(L);
break;
}
int main()
{
List* list = NULL;
setlocale(LC_ALL, "Rus");
int choice, i;
cout << "Здравствуйте, хотите создать новый список?\n1-да\n0-нет\n" << endl;
cin >> choice;
if (choice == 1)
{
menu(list);
}
getchar();getchar();
return 0;
}
Ko1iN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов списка Kir94 Паскаль, Turbo Pascal, PascalABC.NET 2 17.10.2015 12:00
Удаление из линейного списка элементов kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 3 08.11.2012 21:16
С++ Строки - списки. Удаление элементов списка. Daramos Помощь студентам 0 16.12.2010 09:05
Удаление элементов из списка. grave123 Общие вопросы C/C++ 0 10.03.2010 15:33
Удаление элементов из списка Wi1D Помощь студентам 0 18.05.2009 00:23