/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
/*方法一 采用头插法*/
/*手动增加一个带有头结点的链表
ListNode *L=new ListNode(0);
*/
/*不手动增加一个带有头结点的链表*/
ListNode *r;
ListNode *p=head;
head=NULL;
while(p!=NULL){
r=p->next;
p->next=head;
head=p;
p=r;
}
return head;
/*方法二 采用原地逆置,三个指针的思想*/
// if(head==NULL) return head;
// ListNode *pre,*p=head,*r=p->next;
// p->next=NULL;
// while(r!=NULL){
// pre=p;
// p=r;
// r=r->next;
// p->next=pre;
// }
// head=p;
// return head;
}
};
链表反转2种方法
最新推荐文章于 2024-05-12 12:39:14 发布