
【数据结构】1.链表
2025/4/23大约 2 分钟
【数据结构】1.链表
系列文章
系列代码
GALA-Lin/Algorithm: CSDN基础算法系列配套代码
一、链表
void resverse()
Node* prev = NULL; Node* current = head; Node* next = NULL;
prev
:用于存储链表中当前节点的前一个节点。初始值为NULL
,因为链表的最后一个节点的next
指针应该指向NULL
。current
:指向链表的头节点head
,开始时从头节点开始反转。next
:用于存储链表中当前节点的下一个节点。初始值为NULL
。
遍历链表并反转每个节点的
next
指针while (current != NULL) { next = current->next; // 保存当前节点的下一个节点 current->next = prev; // 将当前节点的next指针指向prev,实现反转 prev = current; // 将prev移动到当前节点 current = next; // 将current移动到下一个节点 }
- 这个循环会一直执行,直到
current
指针变为NULL
(即遍历到链表的末尾)。 - 在每次循环中,首先保存当前节点的下一个节点到
next
,然后将当前节点的next
指针指向prev
,接着将prev
和current
指针依次向后移动一个节点。
- 这个循环会一直执行,直到
更新头节点
head = prev;
- 当循环结束后,
prev
指针会指向原本链表的最后一个节点,这是反转后的新头节点。因此,将head
指针更新为prev
,完成链表的反转。
完整代码:
- 当循环结束后,
void resverse(){
Node* prev=NULL;
Node* current=head;
Node* next=NULL;
while(current!=NULL){
next=current->next;
current->next=prev;
prev=current;
current=next;
}
head=prev;
}