这里的链表为单向链表和双向链表:
单向链表的反转
单向链表的反转,只需要维护1个节点指针,每次只能反转一个节点指向。GLIB的代码如下:(充分利用传入进来的list)GSList*
g_slist_reverse (GSList *list)
{
GSList *prev = NULL;
while (list)
{
GSList *next = list->next;
list->next = prev; // 反转单向指针
prev = list;
list = next;
}
return prev;
}
双向链表的反转
双向链表的反转,只需要交换每个节点的prev和next域,就可以。GLIB的代码如下:GList*
g_list_reverse (GList *list)
{
GList *last;
last = NULL;
while (list)
{
last = list;
list = last->next;
last->next = last->prev;
last->prev = list;
}
return last;
}

本文深入探讨了链表反转技术,包括单向链表和双向链表的反转方法。详细解释了如何通过遍历链表并调整节点指针来实现反转,并提供了GLIB库中实现这些功能的代码示例。

1万+

被折叠的 条评论
为什么被折叠?



