以下函数将列表中的第一个节点与第二个节点进行交换,并返回一个指向编辑列表前面的指针。如果原始列表包含少于两个节点,则不做任何更改,并返回列表前面的原始指针。写链表功能
此功能由教授撰写,但我无法理解他为什么设置
list->next = newFront->next
。
据我所知,他创建了一个新指针来等于第二个节点的地址,下一个新创建的指针将等于第一个节点的地址,但为什么需要将第二个节点的地址设置为原始列表等于newFront->next
:list->next = newFront->next
。这一步甚至是必要的吗?
这里是整个代码:
struct node {
int data;
struct node *next;
};
struct node* swapFirstTwo(struct node* list) {
if(list == NULL || list->next == NULL) return list;
struct node* newFront = list->next;
list->next = newFront->next;
newFront->next = list;
return newFront;
}
你已经理解了这个零或一个元素的列表:现在只需绘制出两个和三个元素的列表,并通过它。在纸上做起来更容易,所以我不会用ASCII艺术杀死自己,除非你仍然无法得到它。 – Useless 2011-12-16 13:25:06