Помогите пожалуйста разобраться с задачей: " Дан указатель PC на один из элементов непустого двусвязного списка. Переместить данный элемент в начало списка и вывести указатели Р1 и Р2 на начало и конец преобразованного списка. Операции выделения и освобождения памяти не использовать, поля data не изменять. " как заполнить элементами структуру без выделения им памяти
volvo
8.01.2008 17:19
Цитата
как заполнить элементами структуру без выделения им памяти
Речь в задании не об этом. А о том, что тебе нужно от заданного указателя пробежать к началу списка (чтобы получить указатель на его начало), и поменять указатели так, чтобы первый элемент списка и тот элемент, на который указывал PC "поменялись местами" (но при этом не менять поле data, а менять только значения указателей)...
Что-то вот такое (p - вспомогательная переменная, first - указатель на начало списка, pc - заданный тебе указатель):
p = first -> next; first -> next = pc -> next; if(pc->next) pc -> next -> prev = first;
if(pc -> prev) pc -> prev -> next = first; first -> prev = pc -> prev; pc -> prev - NULL;
p -> prev = pc;
(начерти схему, куда что указывает, и проследи, что получится в результате выполнения этого алгоритма)...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.