Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex_Dep
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 2
#1

Удаление всех отрицательных в односвязном списке - C++

19.06.2012, 01:47. Просмотров 492. Ответов 0
Метки нет (Все метки)

не могу понять как мне сделать так что бы если введены все отрицательные числа он удалял их и выводил что список пусто. В моей программе он удаляет все отрицательные, но если все элементы отрицательные выдает ошибку. подскажите чего не хватает моей программе, заранее при много благодарен.
Код
#include <iostream>
#include <windows.h>
#include <locale>
 using namespace std;

 class Node
{ 
	public:
	int numer;
	Node* next;
};
 void main()
{
	setlocale(LC_ALL,"rus");
	Node* head = NULL;
	Node* body = NULL;
	short action = -1;
	while (1)
	{
		cout<<"1. Добавить элемент"<<endl;
		cout<<"2. Просмотр списка"<<endl;
		cout<<"3. Поиск отрицательных элементов"<<endl;
		cout<<"4. Удаление первого отрицательного элемента"<<endl;
		cout<<"0. Выход"<<endl;
		cout<<"Ваш Выбор: ";
		cin>>action;

		if (action == 0)
		{
			system("CLS");
			break;
		}	
		if (action == 1)
		{
			Node* ptr = new Node;
			int m;
			cout<<"Введите Число: ";
			cin>>m;
			ptr->numer = m;
			ptr->next = NULL;
			if (head == 0)
			{	
				head = ptr;
				body = ptr;
				system("CLS");
				continue;
			}	
			body->next = ptr;
			body = ptr;
			system("CLS");
			continue;
		}

		if (action == 2)
		{
			Node* ptr = NULL;
			if (head == NULL)
			{	
				cout<<"СПИСОК ПУСТ"<<endl;
				system("PAUSE");
				system("CLS");
				continue;
			}	
			cout<<" СПИСОК "<<endl;
			ptr = head;
			while (1)
			{
				cout<<ptr->numer<<" ";
				if (ptr->next == NULL)
					break;
				ptr = ptr->next;
			}
			cout<<"\n\n";
			system("PAUSE");
			system("CLS");
			continue;
		}
		if (action == 3)
		{
			body=head;
			while (body!=NULL)
			{ 
				if (body->numer<0)
					cout<<body->numer<<" ";
				body = body->next;
			}	
			cout<<endl;
			system("PAUSE");
			system("CLS");
		}
	if (action == 4)
{
	system("CLS");
	Node* del = NULL;
	Node* last = head;

	body=head;
	while (body!=NULL)
	{
		if (body->numer<0)
		{
			
			del=body;
			body=body->next;
			last->next=body;
			if (del==head) 
				head=body;
			delete del;
		}
		else
			if(body && (body->numer<0 && body->next==NULL))
		{
			head==NULL;
		}
			else
		{
			last=body;
			body=body->next;
		}
	}
}

	cout<<endl;
	}
	}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 01:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление всех отрицательных в односвязном списке (C++):

Удаление узлов в односвязном списке - C++
Помогите пожалуйста, не могу понять что не так. Нужно удалить узлы содержащие простые числа.Программа не удаляет! #include&lt;iostream&gt; ...

Поиск и удаление в односвязном списке - C++
Помогите с удаление элемента по ключу(номеру этажа). При удалении 2-го элемента в списке, удаляется вместе с 1-ым, но если удалять 3, то 2...

Удаление по ключу в односвязном списке - C++
Написал алгоритм удаления по ключу в линейном, односвязном списке, но он не удаляет, а коверкает записи. Помогите разобраться.. ...

Удаление повторяющихся элементов в односвязном списке - C++
Добрый день! Задание такое: построить линейный список из нескольких динамических переменных, содержащих вводимые целые числа....

Удаление/добавление записи по ключу в односвязном списке - C++
Возможно-ли удаление или добавление записи по ключу в односвязном списке? Если да, то не пойму, как &quot;перемещаться по списку&quot; не разрывая...

Как можно сместить ID в односвязном списке после удаление элемента - C++
народ можете подсказать как можно сместить айди в односвязном списке послу удаление элемента, на пример у меня там были айди 1, 2, 3, 4 ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 01:47
Привет! Вот еще темы с ответами:

Ошибка в односвязном списке - C++
Помогите решить эти 2 проблемы C4101: NextNode: неиспользованная локальная переменная (в 118 строке) C4703: используется потенциально...

Ошибка в односвязном списке - C++
#include&lt;iostream&gt; #include&lt;clocale&gt; using namespace std; #define DEBUG class Monom{ protected: int...

Сортировка вставками в односвязном списке - C++
Собственно нужно реализовать такую сортировку, но что-то не могу я придумать как её реализовать именно в односвязном списке, у нас ведь...

Использование деструктора в односвязном списке с++ - C++
Здравствуйте. Нужна срочная помощь!!! Есть реализация односвязного списка в котором узел - класс, а не структура. Вначале программы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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