1、链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
LNode* ReverseLinkList3(LNode* head)
{
if(head == NULL)
return head;
LNode* p;
LNode* temp;
LNode* trail=head;
while(trail->next !=NULL && trail->next->next != NULL)
{
//防止无限循环,在测试是设置一个循环标记位!
p=trail->next;
temp=trail->next->next;
trail->next=temp;
p->next=temp->next;
temp->next=p;
trail=p;
}
return head;
}
2 、题目:输入一个链表的头结点,反转该链表,返回反转后链表的头结点;
LNode* ReverseLinkList(LNode* head)//带头结点
{
if(head == NULL)//注意
return head;
LNode* p=head->next;
LNode* temp=NULL;
LNode* trail=NULL;
while(p != NULL)
{ //4句
temp=p;
p=p->next;
temp->next=trail;
trail=temp;
}
head->next=trail;
return head;
}
3 、题目:输入一个链表的头指针,反转该链表,返回反转后链表的头指针;
LNode* ReverseLinkList(LNode* head)//不带头结点
{
LNode* temp=NULL;
LNode* trail=NULL;
while(head != NULL)
{ //4句
temp=head;
head=head->next;
temp->next=trail;
trail=temp;
}
head=trail;
return head;
}