单链表的递归与非递归逆置!

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;
 }
}

 

 

 

其中递归算法还是存在一定的问题  返回的指针并非指向第一个头结点  而是就是头结点   且链表最后一个元素是(逆置前的)头指针,怎么改呢?

posted on 2012-06-01 01:19  cs_jin_scor  阅读(1042)  评论(0编辑  收藏  举报