Java实现单链表翻转实例代码

网友投稿 214 2023-05-30


Java实现单链表翻转实例代码

java实现单链表反转,递归和非递归两种形式

/**

* 反转单链表

*/

/** * 定义链表

*

* @author 16026

*

*/

class Node {

inSQilNCoAmt val;

Node next;

public Node(int val) {

this.val = val;

}

}

public class ReverseList {

/**

* 反转链表

*

* @param head

* @return

*/

public static Node reverseList(Node head) {

if (head == null || head.next == null) {

return head;

}

Node reHead = null;// 定义新链表头结点

while (head != null) {

Node cur = head.next;// 记录下一个节点

head.next = reHead;// 将rehead节点连接到head节点上

reHead = head;// 让rehead指向head

head = cur;// 将head指向下一个节点

}

return reHead;

}

/**

* 递归反转链表

*

* @param head

* @return

*/

public static Node reverseList2(Node head) {

if (head == null || head.next == null)

return head;

Node rehead = reverseList2(head.next);

head.next.next = head;// 将头节点置于末端

head.next = null;// 防止链表循环

return rehead;

}

/**

* 打印链表

*

* @param head

*/

public static void printList(Node head) {

if (head == null)

return;

while (head != null) {

System.out.print(head.val + " ");

head = head.next;

}

}

/**

* 测试

*

* @param args

*/

public static void main(String[] args) {

Node n1 = new Node(1);

Node n2 = new Node(2);

Node n3 = new Node(3);

Node n4 = new Node(4);

Node n5 = new Node(5);

n1.next = n2;

n2.next = n3;

n3.next = n4;

n4.next = n5;

// Node rehead = reverseList(n1);

Node rehead = reverseList2(n1);

printList(rehead);

}

}

运行结果如下:

以上所述是给大家介绍的Java实现单链表翻转实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java图形验证码生成工具类 web页面校验验证码
下一篇:vue 2.0组件与v
相关文章

 发表评论

暂时没有评论,来抢沙发吧~