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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать программу, вычисляющую n-е число Фибоначчи http://www.cyberforum.ru/cpp-beginners/thread1108363.html
Написать программу, вычисляющую n-е число Фибоначчи по формуле Fn=round((\phi ^n)/(sqrt5)) (ВХОД). Целое число . Если вводится некорректное значение , на экране должно появиться предупреждение «Invalid input value», после чего снова появляется приглашение к вводу (ВЫХОД). n-е число Фибоначчи , если оно меньше 2^32, или строка «The solution is out of 32-bit integer range», если...
C++ Вычисления интеграла Помогите написать программу такого рода: 1 Вычисление значения определенного интеграла одном процессе с измерением времени вычисления с точностью до миллисекунд. Вычисление точного значения определенного интеграла с использованием первообразной функции. Определение точности (погрешности) вычисления E. Там сначала это вычисляется вручную по формулам приложенных в изображении,как это реализовать... http://www.cyberforum.ru/cpp-beginners/thread1108346.html
C++ Поменять местами соседние слова в тексте
Написать программу, которая считывает текст из файла и выводит его в другой файл и на экран, меняя местами каждые два соседних слова. Можно ли как-нибудь сократить или по-другому сделать??? И нужно добавить "выводит его в другой файл" #include "stdafx.h" #include <fstream> #include <iostream> using namespace std;
как сортировать массив? (Смотрите внизу выделено восклицательными знаками) C++
#include <iostream> #include <conio.h> using namespace std; struct Stydent { char faculty; int rate; char group;
C++ решил начать программировать на С++ http://www.cyberforum.ru/cpp-beginners/thread1108322.html
Составить программу на языке С++ для обработки одномерных массивов с использованием указателей: 1. Ввести n элементов одномерного массива; 2. Вычислить указанное выражение; 3 Вывести на экран значение указанного выражения. Добавлено через 19 минут Да алгоритм действий дайте мне, пожалуйста. Заполнить массив, четный элемент вывести на экрна и т.д. Не знаю что вообще тут нужно делать.
C++ Проверить является ли строка палиндромом, учитывая пробелы и знаки препинания Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки и обработку строки: Проверить является ли строка палиндромом. (Палиндром - это выражение, которое читается одинакова слева направо и справа налево). Тема затертая, но не... подробнее

Показать сообщение отдельно
Niklitel
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 17
01.03.2014, 14:08     Удаление узлов в односвязном списке
Помогите пожалуйста, не могу понять что не так. Нужно удалить узлы содержащие простые числа.Программа не удаляет!
Код
#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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru