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

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

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

Удаление узлов в односвязном списке - C++

01.03.2014, 14:08. Просмотров 418. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста, не могу понять что не так. Нужно удалить узлы содержащие простые числа.Программа не удаляет!
Код
#include<iostream>
#include<conio.h>
bool prost (int x)
{
	int s=0;
	for (int i=1; i<=x; i++) {
		if (x%i==0) {
			s++;
		}
	}
	if (s==2){
		return true;
	}
	return false;
};
struct node 
{
	int ch;
	node* link;
};
int main()
{
	setlocale(LC_ALL, "rus");
	using namespace std;
	node *top, *k;
	int w,n;
	top=NULL;
	cout<<"введите количество чисел"<<endl;
	cin>>n;
	cout<<"введите числа"<<endl;
	for (int i=0; i<n; i++) {
		cin>>w;
		k = new node;
		k->link = top;
		k->ch = w;
		top = k;
	}
	k = top;
	while (k != NULL)
	{
		cout<<k->ch<<endl;
		k = k->link; // Перемещение к следующему узлу
	}
	// Удаление узлов стека, содержащих простое число
	k = top;
	node *l = top;
	// Указатель на предыдущий узел
	while (k != NULL)
	{
		if (prost(k->ch)==true) 
		{
			if (k == top)
			{ // Если простое число - вершина
				top = k->link;
				delete k;
				k = top;
			}
			else
			{ // Ecли простое число не веpшина
				l->link = k->link;
				delete k;
				k = l->link;
			}
		}
		else
		{ // Eсли не простое
			l = k;
			k = k->link;
		}
	}
	k = top;
	while (k != NULL)
	{
		cout<<k->ch<<endl;
		k = k->link; // Перемещение к следующему узлу
	}	
	getch ();
	return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 14:08     Удаление узлов в односвязном списке
Посмотрите здесь:

удаление/добавление записи по ключу в односвязном списке C++
C++ Сортировка вставками в односвязном списке
Ошибка в односвязном списке C++
C++ Как можно сместить ID в односвязном списке после удаление элемента
Ошибка в односвязном списке C++
Удаление по ключу в односвязном списке C++
Удаление повторяющихся элементов в односвязном списке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,968
Завершенные тесты: 1
01.03.2014, 14:12     Удаление узлов в односвязном списке #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
bool prost (int x)
{
    for (int i=2; i<=x/2; i++) 
        if (x%i==0) 
            return false;
    return true;
}
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
01.03.2014, 14:18  [ТС]     Удаление узлов в односвязном списке #3
Все равно не удаляет=(
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
01.03.2014, 14:19     Удаление узлов в односвязном списке #4
zss, а почему это до икс пополам вообще?
C++
1
for(i=2; i*i<=x; i++)
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,968
Завершенные тесты: 1
01.03.2014, 14:24     Удаление узлов в односвязном списке #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
почему это до икс пополам
А если больше, то делиться нацело никогда не будет.
А вот x делится на x нацело
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
01.03.2014, 14:29     Удаление узлов в односвязном списке #6
zss, наоборот надо не больше, а меньше! Перечитай мой пост!
zss
Модератор
Эксперт С++
6242 / 5845 / 1891
Регистрация: 18.12.2011
Сообщений: 14,968
Завершенные тесты: 1
01.03.2014, 14:30     Удаление узлов в односвязном списке #7
Цитата Сообщение от Niklitel Посмотреть сообщение
Все равно не удаляет
У меня удаляет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2014, 14:39     Удаление узлов в односвязном списке
Еще ссылки по теме:

Найти в односвязном списке отрицательные элементы и удалить их C++
C++ Как сделать сортировку по узлам в односвязном списке?
C++ Удалить все вхождения элемента в односвязном списке
Поиск и удаление в односвязном списке C++
C++ Ошибка с удалением элемента в односвязном списке

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

Или воспользуйтесь поиском по форуму:
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
01.03.2014, 14:39  [ТС]     Удаление узлов в односвязном списке #8
Все, спасибо большое, все удаляет!!!=)
Yandex
Объявления
01.03.2014, 14:39     Удаление узлов в односвязном списке
Ответ Создать тему
Опции темы

Текущее время: 18:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru