Проблема – обращение (реверсирование) односвязного линейного списка.
Элемент такого типа:
struct Ceil{
intcontent;
Ceil *Link;
};
Ceil*P;
Пример:
1 2 3 превратить в3 2 1
Много извращался, пробовал рекурсию: распечатать в обратном порядке удалось легко, а вот как _перебросить указатели_в обратном порядке?
21 сентября 2009 в 14:03
с красивыми девочками везде хорошо,
(это без красивых девочек плохо)
вспомнился анекдот у программиста спрашивают
- тебя что-нибудь интересует кроме девочек и компьютеров?
*тот задумался и ответил*
- да, женщины и калькуляторы.
21 сентября 2009 в 11:02
А никто и не спорил… Равно как и сильные мальчики =)
Но на ВМиКе с красивыми девочками как-то лучше =)
20 сентября 2009 в 23:05
протрите очки. есть на мехмате вполне себе красивые девочки… я всегда говорил что много учиться вредно.
20 сентября 2009 в 20:02
А ты, видать, сильный, раз не понял =)
20 сентября 2009 в 2:00
Это где девочки красивые? На мех-мате? ))
19 сентября 2009 в 15:04
Не правильно говорите. Научить чему-то вообще говоря невозможно, можно только научиться.
А вообще, ничего страшного. Зато девочки красивые, а мальчики сильные.
19 сентября 2009 в 10:02
Вот поэтому и грустно, что так учат.
18 сентября 2009 в 23:05
Пашка ت Джиоев
Не грусти, все не так уж плохо) Я проявил одномоментную слабость и поленился еще чуть-чуть побольше напрячь мозги))
К тому же (ты вряд ли сочтешь это оправданием) программированию у нас уделяют очень мало внимания: мало учат, мало задают, мало спрашивают.
18 сентября 2009 в 22:02
3/4 студентов мехмата МГУ не могут написать самостоятельно квиксорт на сях. Причём из них подавляющее большинство – механики, которым вычислениями придётся заниматься. Зачем, ведь есть матлаб и "математика"?
18 сентября 2009 в 21:04
Очень грустно, что такой вопрос задает человек, учащийся на последнем курсе механико-математического факультета
18 сентября 2009 в 16:02
Алексей Руденко
такой способ сразу нарушает связность
Владимир /*PVoLan, можно просто PVo*/ Шалимов
спасибо, любопытная идея
Нгамдкхе Кверос
*Бурная овация* Огромное спасибо! То, что нужно. Я уж всю голову сломал, чтобы родить нечто подобное. Вопрос решен, тему можно удалять.
18 сентября 2009 в 16:02
Всем на заметку: на личном опыте благодаря вам убеждаюсь, что грамотно заданный вопрос влечет за собой быстрый и квалифицированный ответ.
Еще раз всем спасибо за внимание и помощь.
18 сентября 2009 в 16:00
хм, ну может пройти по списку, и со второго элемента начиная менять указатель вместо следующего, на предыдущий?а потом в указатель на начало списка поставить последний элемент?
18 сентября 2009 в 15:05
Ceil* reverse(Ceil* p){
if(p->Link==NULL) return p; //последний элемент списка (хвост) будет возвращен как новый начальный
Ceil t = reverse (p->Link); //Рекурсивно разворачиваем список, кроме 1го элемента, при этом запоминаем хвост старого списка-голову развернутого списка
p->Link->Link = p; //Собственно переброс указателя
return t; //Возвращаем хвост старого списка-голову развернутого списка
}
void main(){
Ceil* source;
Ceil* reversed = reverse(source);
source->Link=NULL; //Бывшую голову-новый хвост надо обрезать – не придумал, куда это впихнуть в reverse, потому отдельно.
}
//Писалось чайником, ногами не бить.
18 сентября 2009 в 15:05
Ceil *tmp,*first,*firstnew=NULL;
<…>
while(first)
{tmp=first->Link;
first->Link=firstnew;
firstnew=first;
first=tmp;
}
first = firstnew;
как-то например так.