java 单链表反转 递归法 遍历法

以下是一个例子

package com.haha.demo.util;

public class node {

	static class Node {
		Integer data;
		Node next;
	}

	static Node readyNode() {
		Node linkNode1 = new Node();
		linkNode1.data = 1;
		Node linkNode2 = new Node();
		linkNode2.data = 2;
		Node linkNode3 = new Node();
		linkNode3.data = 3;
		Node linkNode4 = new Node();
		linkNode4.data = 4;
		Node linkNode5 = new Node();
		linkNode5.data = 5;
		Node linkNode6 = new Node();
		linkNode6.data = 6;
		linkNode1.next = linkNode2;
		linkNode2.next = linkNode3;
		linkNode3.next = linkNode4;
		linkNode4.next = linkNode5;
		linkNode5.next = linkNode6;
		return linkNode1;
	}

	/**
	 * 递归法单链表反转
	 * @param node
	 * @return
	 */
	static Node reverseLinkedList(Node node) {
		if (node == null || node.next == null) {
			return node;
		} else {
			Node headNode = reverseLinkedList(node.next);
			node.next.next = node;
			node.next = null;
			return headNode;
		}
	}

	/**
	 * 遍历法单链表反转
	 * @param node
	 * @return
	 */
	static Node reverseBlLinkedList(Node node) {
		Node previousNode = null; //前驱节点
		Node currentNode = node;  //当前节点
		Node headNode = null;
		while (currentNode != null) {
			Node nextNode = currentNode.next;
			if (nextNode == null) {
				headNode = currentNode;
			}
			currentNode.next = previousNode;
			previousNode = currentNode;
			currentNode = nextNode;
		}
		return headNode;
	}

	public static void main(String [] args){
		//顺序法链表反转
		Node kk = readyNode();
		Node gg = reverseBlLinkedList(kk);
		System.out.println("反转完毕");


		//递归法链表反转
//		Node kk = readyNode();
//		Node gg = reverseLinkedList(kk);
//		System.out.println(12312);
	}



}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值