唔。。。这指针逆置就先列一些我已经看懂了的简单的方法吧
1、呜呜,这真的是最最简单的方法啦
超级简单的就地逆置某人写的
这种方法就是把链表的头摘下来,然后将数字的箭头指向改一下,然后,把head再安到最后
void change(ListNode *head)
{
ListNode*p,*q,*s;
p=head->next;
head->next=NULL;
q=NULL;
while(p!=NULL)
{
s=p->next;
p->next=q;
q=p;
p=s;
}
head->next=q;
return head;
}
迭代法,和上边的方法实际上是差不多的,就是每次都会把head接在最后的那个数
void *change(ListNode*head)
{
if(head==NULL)
return NULL;
ListNode * p,*q;
p=head->next;
head->next=NULL;
while(p!=NULL)
{
q=p->next;
p->next=head->next;
head->next=p;
p=q;
}
return head;
}
3、递归法,唔。。。我不会这个递归的方法;好吧,我打了一遍,我还是不懂,递归真糟糕啊
void *Change(node *head)//这个head好像是以一个节点
{
if(head ==NULL||head->next==NULL)
return head;
node *p,*q;
p=head;
q=p->next;
Head = Change(q);
q->next=p;
p->next=NULL;
return head;
}