Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Структуры со ссылками на себя

Автор: lvi 8.01.2008 16:31

Помогите пожалуйста разобраться с задачей: " Дан указатель 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;
(начерти схему, куда что указывает, и проследи, что получится в результате выполнения этого алгоритма)...