本题要求实现一个函数,将给定的单链表逆转。
函数接口定义:
List Reverse( List L );
其中List结构定义如下:
typedef struct Node *PtrToNode;
struct Node {
ElementType Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
L是给定单链表,函数Reverse要返回被逆转后的链表。
实现:
List Reverse( List L )
{
List pre = NULL, now = NULL;
if (L == NULL)
return L;
pre = L, now = L->Next, pre->Next = NULL;
while (now != NULL) {
List tmp = now->Next;
now->Next = pre;
pre = now;
now = tmp;
}
return pre;
}

本文介绍了一种单链表逆转的实现方法。该方法通过定义一个前驱节点和当前节点来迭代地改变每个节点的next指针,最终完成链表的逆转。此算法的时间复杂度为O(n),空间复杂度为O(1)。
2586

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



