Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Удалить все наибольшие элементы, кроме первого, в списке целых чисел

Ответить
Настройки темы
C/C++ - Удалить все наибольшие элементы, кроме первого, в списке целых чисел

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 04-03-2015
Описание: #
Код: Выделить весь код
#include <stdio.h>
#include<locale.h>
#include <conio.h>
#include <time.h>
#include<stdlib.h>
struct number
{
int value;
number *next;
} *phead, *last, *r; //phead - голова списка, last - хвост, r - текущий элемент
int main()
{
setlocale(LC_ALL,"rus");
int count;
srand (time (NULL));//функция генератора случайных чисел
printf("Количество чисел в списке: "); //количество чисел в списке
scanf("%d",&count);
system ("cls");//функция вызова командного процессора для выполнения команды
printf("Список:\n");
for (int i = 0; i < count; i++)
{
if (phead)
{
last->next = new (number);
last = last->next;
last->next = NULL;
}//если список НЕ пустой
else 
{
phead = new (number);
phead->next = NULL;
last = phead;
}//если список пустой
last->value = rand()%11; //случайное число от 0 до 10
}
//Вывод списка на экран список и поиск наибольшего числа
r = phead; 
int max = r->value;
while (r)
{
if (r->value > max) max = r->value;
printf("%d",r->value);
r = r->next;
}
printf("\n\nНаибольший:%d\n", max);
r = phead;
number *next = r->next;
number *tmp;
printf("\nНовый список :\n");
 
//***************
if (!phead->next->next)
{
if (phead->next->value == max) 
{
delete last;
phead->next = NULL; 
printf("%d",phead->value);
getch(); 
return 0;
}
if (phead->value == max) 
{
delete phead;
phead = last; 
printf("%d",phead->value);
getch(); 
return 0;
}
}//проверяем если в списке два элемента
 
while (next->next)
{
if (next->value == max) 
{
tmp = next;
r->next = next->next;
delete tmp;
}
r = r->next;
next = r->next;
}//удаляем максимальный элемент из списка
 
r = phead;
while (r)
{
printf("%d",r->value);
r = r->next;
} //выводим на экран
getch();
return 0;
}
Подскажите,что надо добавить,чтобы первый максимальный элемент не был удален из списка?

Отправлено: 18:08, 01-03-2015

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Удалить все наибольшие элементы, кроме первого, в списке целых чисел

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] удалить все пустые строки, кроме самой последней Alexander_88 Скриптовые языки администрирования Windows 8 05-01-2015 12:43
CMD/BAT - Подсчет количества целых чисел в текстовом файле Hardip Скриптовые языки администрирования Windows 5 08-12-2010 14:49
CMD/BAT - [решено] Удалить все файлы из папки кроме нужных Sirimika Скриптовые языки администрирования Windows 16 12-11-2010 10:33
Разное - Паскаль! создать массив целых чисел и записать его в файл Desvi Программирование и базы данных 3 31-05-2010 22:54
C/C++ - [решено] Теоретический вопрос в задаче о классе целых чисел Sky-er Программирование и базы данных 4 08-01-2009 04:18




 
Переход