java实现单链表的反转

 实现单链表的反转:

//翻转链表
public class ReverseList{


     //链表节点的定义
    public static class Node{
      
        public int  value;
        public Node next;
        public Node(int data)
        {
        	this.value=data;
        }

    }
    //(递归解法)翻转链表
    public static Node DReverselist(Node head)
    {
    	if(head==null)
    	{
    		return null;
    	}
        Node p=head.next; //记录第二个节点
        if(p==null)  
        {
        	return head;  //只有一个节点直接返回p
        }
        Node pre=DReverselist(p);
        head.next.next=head; //反转链表
        head.next=null;

        return pre;

    }

    //(循环解法)翻转链表
    public static Node Reverselist(Node head)
     {
        if(head==null)
        {
        	return null;
        }
        
        Node p=head;       //记录头节点
        if(p.next!=null)  //移动第二个节点
        {
        	p=p.next;
        }else
        {
        	return head;
        }
        head.next=null; //头节点的下一个节点指向空

        while(p!=null)
        {   Node t=p.next;
        	p.next=head;
        	head=p;
        	p=t;

        }
        
       return head;
     }
    
    //打印链表
     public static void  PrintList(Node head)
     {

     	while(head!=null)
     	{
     		System.out.print(head.value+"  ");
     		head=head.next;
     	}

     	System.out.println();
     }


	public static void main(String []args)
	{
         Node node =new Node(1);
         node.next =new Node(2);
         node.next.next =new Node(3);
         node.next.next.next =new Node(4);
         PrintList(node);
         //Node dode= DReverselist(node);
         //PrintList(dode);
         Node mode= Reverselist(node);
         PrintList(mode);
	} 
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值