Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите изменить функцию 
:(
    Опции темы
Nsom
Дата 11.11.2018, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.11.2018

Репутация: нет
Всего: нет



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

#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::outputList()
{
    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;
}
PM MAIL   Вверх
kapbepucm
Дата 13.11.2018, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Без подсветки не читабельно!  smile
Если по теме, попробуй заменить 
Код
if (temp->info < 0)
на
Код
if (temp->info > 0)



--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.