前言: 链表是一种物理存储单元,是不连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中指针的顺序来实现的。
链表是一种物理存储单元,是不连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中指针的顺序来实现的。链表由一系列节点组成(链表中的每个元素称为一个节点)形式,节点可以在运行时动态生成。每个节点有两部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。与线性表序结构相比,操作复杂。
v定义链表
/ **
* @作者头头 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @从
* /
public class ListNode {
public int value;
下一个公共ListNode;
public ListNode( int data){
this .value = data;
}
}
v递归实现
/ **
* @作者头头 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @从
*/
public class ReverseHelper {
public static ListNode reverse(ListNode curr){
if (curr == null || curr.next == null ){
return curr;
}
ListNode temp = curr.next;
ListNode newNode = reverse (curr.next);
temp.next =当前;
curr.next = null ;
返回新节点;
}
}
v非递归实现
/ **
* @作者头头 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @从
* /
public class ReverseHelper {
public static ListNode whileReverse (ListNode curr) {
ListNode pre = null ;
ListNode 下一个= null ;
而(当前!= null ){
下一个= curr.next;
curr.next = pre;
前=当前;
当前=下一个;
}
返回前;
}
}
v测试结果
/ **
* @作者头头 https://www.cnblogs.com/toutou/
* @date 到 2020/11
* @从
*/
public class App {
public static void main(String[] args) {
ListNode head = new ListNode (0 );
列表节点 tmp = null ;
ListNode cur = null ;
for ( int i = 1; i < 10; i++ ) {
tmp = new ListNode(i);
如果(1 == i){
头.next = tmp;
}其他{
cur.next = tmp;
}
cur = tmp;
}
// ListNode node1 =ReverseHelper.whileReverse(head);
ListNode node1 = ReverseHelper.reverse(head);
而(节点1!=空){
System.out.println(node1.value);节点1 =节点
1.next ;
}
System.out.println( "OK" );
}
}
文章出自:http://qh.itpxw.cn/peixun/software/2022121695.html
文章标题:Java单链表反转详解
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2024-02-20 13:02
Java定义方法的格式是什么?IT培训网小编来告诉大家。所谓方法...
大家在Java教程中会学到关于Java消息推送的知识,那么,Java消息...
常用的Java日期格式转换有哪些?IT培训网小编来告诉大家。 1...
Java创建对象数组的方法是什么?IT培训网小编来告诉大家。Ja...