Развернуть односвязный линейный список за один проход. (Без создания дополнительного списка)
Язык c++
*учесть что список может оказаться пустым
Нужно написать функции создания/добавление элемента списка и разворачивания списка
Пусть список состоит из букв
"Я самый главный!"- заявил монитор, на мне возникает информация и изображения.
"Нет, я самая главная,- сказала клавиатура, без меня никак, не сможешь ничего оттреадактировать,вбить информацию в память, общаться - да вообще ничего!"
Но память возразила : " Ээх вы, я тут главнее всех, как вы без меня! Ничего не сохранишь, не запомнишь, да в общем без меня очень сложно что-то представить!"
"Да вы что? - начал возмущаться процессор, - Главных не должно быть, мы все представляем собой одно целое!" Так они и воссоединились и представляют собой одну частичку главного .
¬А отрицание А, то есть х не принадлежит А
перепишем и упростим исходную формулу
P→((Q∧¬A)→P)
известно что X→Y=¬X∨Y (доказывается просто, например через таблицу истинности)
тогда:
P→(¬(Q∧¬A)∨P)
раскроем скобку ¬(Q∧¬A) с закона де Моргана (стыдно их не знать, если что это такие же основы как и таблицы истинности)
P→(¬Q∨¬¬A∨P) = P→(¬Q∨A∨P) = ¬P∨¬Q∨A∨P
¬P∨P=1 то есть всегда истинно и 1∨Х=Х значит ¬P и P можно убрать
остается ¬Q∨A
Значит х либо принадлежит А либо не принадлежит Q
для выполнения этого условия необходимо чтобы все значения Q принадлежали А, тогда минимальное А совпадает с Q
ответ А=[40,77]