C++ 链表遍历: 从最后一个节点回到第一个节点
要回到第一个节点,可以使用一个指针指向链表的头节点,然后再遍历一遍链表即可。具体实现如下:
// 定义一个指向头节点的指针pHead
ListNode* pHead = head;
// 遍历直到p指向链表的最后一个节点
while (p->next != NULL) {
p = p->next;
}
// p现在指向链表的最后一个节点,将它指向头节点
p->next = pHead;
// 现在链表成为了一个环形链表,可以重新从头节点开始遍历
p = pHead;
while (p != NULL) {
// 遍历节点的操作
p = p->next;
}
算法步骤:
- 定义一个指针
pHead指向链表的头节点。 - 遍历链表,直到指针
p指向最后一个节点(p->next == NULL)。 - 将最后一个节点的
next指针指向头节点pHead,将链表转换为环形链表。 - 将指针
p指向头节点pHead,开始遍历环形链表。
注意:
- 这种方法将链表转换为环形链表,如果需要恢复原链表,需要将最后一个节点的
next指针重新设置为NULL。 - 这种方法适用于需要反复遍历链表的情况,例如需要多次访问链表的第一个节点。
原文地址: https://www.cveoy.top/t/topic/nmHL 著作权归作者所有。请勿转载和采集!