力扣206. 反转链表

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

解题思路

先转化为数组,再对数组求转置
再把转置后的数组赋给a

struct ListNode* reverseList(struct ListNode* head){
    struct ListNode* p=head;
    int size=0;
    while(p){
        size++;
        p=p->next;
    }
    if(size!=0){
        int a[size],i=0;
        p=head;
        while(p){
            a[i]=p->val;
            i++;
            p=p->next;
        }
        int temp=0;
        for(int i=0,j=size-1;i<j;i++,j--){
            temp=a[j];
            a[j]=a[i];
            a[i]=temp;
        }
        p=head;
        for(int k=0;k<size;k++){
            p->val=a[k];
            p=p->next;
        }
    }
    return head;
}

你可能感兴趣的:(力扣)