单链表的递归与非递归逆置!
void reserve(linkNode<char> *head) //头插入的逆置方法
{
linkNode<char> *q;
q=head->next;
if(head->next==NULL||head->next->next==NULL)
return;
else
while(q!=NULL&&q->next!=NULL)
{
linkNode<char> *temp;
temp=q->next;
q->next=temp->next;
temp->next=head->next;
head->next=temp;
}
}
linkNode<char> *reserve(linkNode<char> *head,int flag) //递归
{
linkNode<char> *temp;
if(head->next==NULL)
return head;
else
{
temp=reserve(head->next,1);
head->next->next=head;
head->next=NULL;
return temp;
}
}
其中递归算法还是存在一定的问题 返回的指针并非指向第一个头结点 而是就是头结点 且链表最后一个元素是(逆置前的)头指针,怎么改呢?