Мой вопрос прост и слишком редок.Я знаю, как добавить или удалить узел, но как скопировать данные одного предыдущего узла в следующий узел?В основном, для массива проще всего сместить его, скопировав в последний элемент предыдущий элемент и переместив массив вверх следующим образом:
for (i = number_of_elements ; i > 0; i--)
tab[i] = tab[i-1];
В противном случае вы бы скопировали каждый элемент в следующий и получили бы тот же самыйданные для каждого элемента, который нам не нужен.
Затем я могу присвоить вкладке [0] новое значение.
Но как это сделать со связанным списком?Я знаю, как добавить узел в начало списка:
struct node *node (struct node *head, int data)
{
struct node *new_node = malloc(sizeof(struct node));
new_node->data = data;
new_node->next = head;
// new_node->prev = ??
return new_node;
}
, который я назначаю своему указателю списка, чтобы он добавлялся слева.Но я не могу пойти вверх по связанному списку.Поскольку указатель next ведет к следующему узлу.Должен ли я добавить предыдущий указатель на каждый узел?Но на что это должно указывать?Спасибо за помощь в любом случае или за ваш упрек, потому что я просто не могу думать должным образом.
edit: Моя идея заключается в следующем:
for (current = head; current!= NULL; current=current -> next) ;
и оттуда:
for( ; current!= head; current = current -> prev)
current ->data = current -> prev -> data;
return head;