|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.11.2018, 16:57 | #1 |
Пользователь
Регистрация: 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; } |
11.11.2018, 22:06 | #3 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Третий пост на одну и ту же тему... Идем на рекорд, или у робота заело пластинку? п. 4.2. правил
Если бы модером был я, исвользовал бы компонет "розги" применительно к переменной "#опа" Последний раз редактировалось digitalis; 12.11.2018 в 06:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно изменить функцию чтоб она удаляла не положительные элементы, а отрицательные | 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 |