我的问题很简单,回答却很少。我知道如何添加或删除节点,但是如何将上一个节点的数据复制到下一个节点?基本上,使用数组最简单的方法是将上一个元素复制到最后一个元素,然后像这样向上移动数组:
for (i = number_of_elements ; i > 0; i--)
tab[i] = tab[i-1];
否则,您将每个元素复制到下一个元素,并为每个不需要的元素提供相同的数据。
然后我可以为tab [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;
}
我将其分配给列表指针的,以便将其添加到左侧。但我不能上链表。由于指针下一个指向下一个节点。我是否必须向每个节点添加一个上一个指针?但是要指出什么呢?感谢您以任何方式提供帮助或您的指责,因为我只是无法正确思考。
编辑:然后我的想法是简单地做如下:
for (current = head; current!= NULL; current=current -> next) ;
然后从那里:
for( ; current!= head; current = current -> prev)
current ->data = current -> prev -> data;
return head;
答案 0 :(得分:1)
像这样吗?
void Shift(node* Head) {
type PrevData = Head->Data;
Head = Head->Next;
while (Head) {
type Temp = Head->Data;
Head->Data = PrevData;
PrevData = Temp;
Head = Head->Next;
}
}