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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Открытие документа с использованием созданого блокнота http://www.cyberforum.ru/cpp-beginners/thread608931.html
Есть созданная программа блокнот, работает в общем нормально, но одна маленькая проблемка, открывает документ лиш через файл->открыть..., а если беру двоймым щелчком на файл, программа одкрывается но...
C++ Способы конкатенации переменных строкового типа и Char #include <iostream> #include <windows.h> using namespace std; int main() { char *_new = "\\formats.."; char newname; http://www.cyberforum.ru/cpp-beginners/thread608930.html
C++ Обработка ошибок "Ссылка на неразрешенный внешний символ"
взял код из сети по работе с WinPCap. откомпилить его не могу. ошибки валятся. появляются только в тот момент когда со всеми error'ами разберусь. стандартная ситуация. происходит не первый раз, но...
Функция с комплексными числами C++
Доброго времени суток. Есть следующая функция ln (1 + z) = z – z^2 / 2 + z^3 / 3 – … + (–1)^n-1 (z^n / n) + … ,где Z - комплексное. Помогите , пожалуйста,загнать её в прогу(комплексное число...
C++ Нарисовать фигурки http://www.cyberforum.ru/cpp-beginners/thread608832.html
Пользователь с клавиатуры вводит размеры фигуры. Нарисовать фигурки - прямоугольник(залитый, пустой, залитый на половину, залитый под основной диагональю, залитый под дополнительной диагональю), ...
C++ Вычислить периметр пересекающихся прямоугольников Помогите написать,описание и реализация алгоритма вычисления периметра пересекающихся прямоугольников.На С++. Заранее благодарю! Добавлено через 21 час 21 минуту Добрые люди откликнитесь.... подробнее

Показать сообщение отдельно
Alex_Dep
Сообщений: n/a

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

19.06.2012, 01:47. Просмотров 482. Ответов 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;
	}
	}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru