单链表逆序算法

来源:互联网 发布:c 编程主要应用 编辑:程序博客网 时间:2024/06/07 10:59

单链表逆序-----非递归

node * reverse(node *head)

{

node * cur,pnext,temp;

cur=head;

pnext=head-next;

while(cur != NULL  )

{

temp=pnext->next;             //保存pnext后面一个节点到temp

pnext->next=cur;                  //将pnext节点提到cur前面,这一步即实现了逆序

cur=pnext;                           //将cur节点指向逆序后的最前面节点

pnext=temp;                       //将pnext指向保存到temp中的节点,以便下次逆序

}

            head->next=NULL;                       ;逆序完成后完成首尾指针指向

            head=cur;

            return head;

}

 

单链表排序----递归算法

node *reverse(node * head)

{

       node *tail, newhead;

       if(head == NULL ||  head->next  == NULL)

           return head;

       tail=head->next;

      newhead=reverse(head->next);

      tail->next=head;                  //这一步实现逆序

     //逆序后设置尾指针指向

     head->next=NULL;

     return newhead;

 

}