反转一个单链表。
示例:
输入: 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;
}