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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2018, 16:57   #1
XakProg
Пользователь
 
Регистрация: 11.10.2018
Сообщений: 15
По умолчанию Нужно изменить функцию чтоб она удаляла не положительные элементы, а отрицательные

Здравствуйте. Помогите пожалуйста , нужно изменить функцию чтоб она удаляла не отрицательные элементы а положительные (с++)
#include "pch.h"
#include <iostream>

using namespace std;

struct node
{
int info;
node *link;
};

class List
{
protected:
node *head; // Указатель на начало списка
node *tail; // Указатель на конец списка
public:
List();
~List();
void fillingList(int);
void searchNegative();
void elementRemove(node*, node*);
void outputList();
};

List::List()
{
head = NULL;
tail = NULL;
}

List::~List()
{
node *temp = head; // Временный указатель на начало списка
while (temp != NULL)
{
temp = head->link;
delete head;
head = temp;
}
}

void List::fillingList(int n)
{
int number;

for (int i = 0; i < n; i++)
{
node *temp = new node; // Выделение памяти
cin >> number;
temp->info = number; // Временное запоминание принятого числа
temp->link = NULL; // Указание, что следующее звено новосозданной структуры пока пустое

if (head != NULL) // Если список не пуст
{
tail->link = temp; // Указание, что следующее звено списка это новосозданная структура
tail = temp;
}
else
{
head = tail = temp; // Если список не пуст, добавление первого элемента
}
}
}

void List::searchNegative()
{
node *temp = head; // Временный указатель на начало списка
node *prev = temp;
while (temp != NULL) // Пока в списке что-то встречается
{
if (temp->info < 0)
{
node* ptrToNext = temp->link; //added
elementRemove(temp, prev);
temp = ptrToNext; //added
continue;
}
prev = temp;
temp = temp->link; // Сдвигаем указатель на начало на адрес следующего элемента
}
}

void List::elementRemove(node *temp, node *prev)
{
if (temp == head)
{
head = temp->link;
delete temp;
}
else
if (temp == tail)
{
tail = prev;
delete temp;
}
else
{
//prev = temp->link;
prev->link = temp->link; // added
delete temp;
//temp = prev;
}
}

void List:utputList()
{
node *temp = head; // Временный указатель на начало списка
while (temp != NULL) // Пока в списке что-то встречается
{
cout << temp->info << " "; // Выводим значения из списка на экран
temp = temp->link; // Сдвигаем указатель на начало на адрес следующего элемента
}
cout << endl;
}

int main() {
setlocale(LC_ALL, "russian");
system("color F0");

int n;

List queue;

cout << "Введите кол-во элементов списка: ";
cin >> n;
cout << "Введите числа: ";
queue.fillingList(n);

queue.searchNegative();

queue.outputList();

system("pause");
return 0;
}
XakProg вне форума Ответить с цитированием
Старый 11.11.2018, 19:57   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Так поменяй условие удаления, в чём проблема?
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 11.11.2018, 22:06   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Третий пост на одну и ту же тему... Идем на рекорд, или у робота заело пластинку? п. 4.2. правил
Если бы модером был я, исвользовал бы компонет "розги" применительно к переменной "#опа"

Последний раз редактировалось digitalis; 12.11.2018 в 06:10.
digitalis вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно изменить функцию чтоб она удаляла не положительные элементы, а отрицательные XakProg Помощь студентам 2 10.11.2018 21:56
Разместить элементы массива так,чтоб сначала шли все положительные числа,а потом-отрицательные, не создавая новый массив Wellshumor Помощь студентам 3 07.10.2018 13:36
Сначала записать отрицательные элементы затем положительные // C++ Loqwer78rus Помощь студентам 20 30.06.2014 22:02
Расположить элементы массива в порядке:отрицательные, положительные, нули FroZko C# (си шарп) 3 28.03.2013 15:20
Все отрицательные элементы массива А заменить на сумму, а положительные на полусумму предшествующих Lada05 Помощь студентам 1 27.10.2010 15:44