编写一个算法来就地逆置一个单链表。默认情况下,链表是带头节点的,但如果链表不带头节点,逆置的过程会有所不同。
第一步:定义逆置函数
根据题目中的“试编写算法将单链表就地逆置”,我们需要:
- 定义一个逆置函数
reverse,它接受一个链表头节点的引用作为参数。
这部分的代码为:
void reverse(LNode*& L) {
LNode *p = L->next, *r;
L->next = NULL;
第二步:逆置链表
根据题目中的“就地逆置”,我们需要:
- 初始化
p指向链表的第一个节点(跳过头节点)。 - 使用
while循环遍历链表,直到p为NULL。 - 在循环中,保存
p的下一个节点到r,然后将p的next指向头节点的下一个节点,最后更新头节点的next为p。
这部分的代码为:
while (p != NULL) {
r = p->next;<

最低0.47元/天 解锁文章
1万+

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



