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

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

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

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

01.03.2014, 14:08. Просмотров 460. Ответов 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;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление узлов в односвязном списке (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 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;
}
1
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
01.03.2014, 14:18  [ТС] #3
Все равно не удаляет=(
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
01.03.2014, 14:19 #4
zss, а почему это до икс пополам вообще?
C++
1
for(i=2; i*i<=x; i++)
1
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.03.2014, 14:24 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
почему это до икс пополам
А если больше, то делиться нацело никогда не будет.
А вот x делится на x нацело
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
01.03.2014, 14:29 #6
zss, наоборот надо не больше, а меньше! Перечитай мой пост!
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.03.2014, 14:30 #7
Цитата Сообщение от Niklitel Посмотреть сообщение
Все равно не удаляет
У меня удаляет.
0
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
01.03.2014, 14:39  [ТС] #8
Все, спасибо большое, все удаляет!!!=)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2014, 14:39
Привет! Вот еще темы с ответами:

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

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

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

Ошибка с удалением элемента в односвязном списке - C++
Здравствуйте! Вроде написал функцию удаления элемента в указанной позиции, но почему то не срабатывает. Где ошибка?Или если есть вариант...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.03.2014, 14:39
Ответ Создать тему
Опции темы

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