题目链接:反转链表
主要是弄清楚几个变量该怎么交换值即可:
c语言版本:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
//可以在开始的时候处理下空链表和只有一个元素的情况,直接返回就行,循环也能处理这两种情况,所以就省掉了对应的代码,看上去更简洁
struct ListNode *pre = NULL, *tmp, *cur = head;
while (cur) {
tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
使用递归方法:
struct ListNode* reverseList(struct ListNode* head){
if (!head || !head->next) {
return head;
}
struct ListNode* p = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return p;
}
原文地址:https://www.cnblogs.com/xiaoshuai666/p/11378450.html
时间: 2024-08-01 00:55:00