Java 反转带头结点的单链表并显示输出的实现过程

 更新时间:2021年11月12日 10:46:17   作者:吉吉女王  
这篇文章主要介绍了Java 反转带头结点的单链表并显示输出,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  注意:要保证已经有Node类和单链表的初始化,这样才能调用反转方法并显示结果。

方法如下:

//Node<T>指泛型结点类
public void reverse2(Node<T> head){
	Node<T> p=head.next;
	Node<T> q=head.next.next;
	head.next=null;
	p.next=null;
	while(q!=null){
		Node<T> temp=q.next;
		q.next=p;
		p=q;
		q=temp;
	}
	q=this.head;
	q.next=p;
    /*
    //想要直接在方法中遍历输出可以使用这段代码   ***p是反转后的第一个结点***
	for(Node<T> qq=p;qq!=null;qq=qq.next){//qq不能为q,因为结束循环后,p是最后一个结点,q是null
		System.out.print(qq.data+"\t");
	}
	*/
 
}

实现过程如图所示:

在循环之前,先把head以及初始p的next断掉,方便后面的循环;循环中的q.next=p就是重定向,这一步把原来的next指向p;

不用q=q.next来使q向后移动,因为q结点的指针重指向后,q的next为空了,无法正确指向下一个结点。这时用temp结点来做一下过渡,在q指针重指向之前,把q的下一个结点赋给temp,即temp=q.next,在重指向后,用q=temp来向后移动;

p=q;q=temp就是往后移动一个结点,可以继续重复循环。

循环结束时,q为空,p为最后一个结点,使q作为头结点并指向p就完成了反转。

整体代码:

Node类:

public class Node<T>{
	public T data;
	public Node<T>next;
	
	public Node(T data,Node<T>next){
		this.data=data;
		this.next=next;
	}
	
	public Node(){
		this(null,null);
	}
	
	public String toString(){
		return this.data.toString();
	}
}

 单链表类:

public class SinglyList<T> {
public Node<T> head;
public SinglyList(){
	this.head=new Node<T>();
}
	public SinglyList(T[] values){
		this();
		Node<T> rear=this.head;
		for(int i=0;i<values.length;i++)
		{
			rear.next=new Node<T>(values[i],null);
			rear=rear.next;
		}
	}
 
//输出方法
public String toString(){
		String str=this.getClass().getName()+"(";
		for(Node<T>p=this.head.next;p!=null;p=p.next)
		{
			str+=p.data.toString();
			if(p.next!=null)
				str+=",";
		}
		return str+=")";
	}
 
//反转方法
public void reverse2(Node<T> head){
	Node<T> p=head.next;
	Node<T> q=head.next.next;
	head.next=null;
	p.next=null;
	while(q!=null){
		Node<T> temp=q.next;
		q.next=p;
		p=q;
		q=temp;
	}
	q=this.head;
	q.next=p;
    /*
    //想要直接在方法中遍历输出可以使用这段代码   ***p是反转后的第一个结点***
	for(Node<T> qq=p;qq!=null;qq=qq.next){//qq不能为q,因为结束循环后,p是最后一个结点,q是null
		System.out.print(qq.data+"\t");
	}
	*/
}
 
public static void main(String[] args) {
		Integer[] a={1,2,4,5,7};
SinglyList<Integer> sl=new SinglyList<>(a);
System.out.println(sl.toString());
sl.reverse2(sl.head);
System.out.println(sl.toString());
}
}

 输出结果:

到此这篇关于Java 反转带头结点的单链表并显示输出的实现过程的文章就介绍到这了,更多相关Java带头结点的单链表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • javaWeb使用servlet搭建服务器入门

    javaWeb使用servlet搭建服务器入门

    这篇文章主要为大家详细介绍了javaWeb使用servlet搭建服务器入门,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java8 使用工厂方法supplyAsync创建CompletableFuture实例

    Java8 使用工厂方法supplyAsync创建CompletableFuture实例

    这篇文章主要介绍了Java8 使用工厂方法supplyAsync创建CompletableFuture实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Mybatis的sql语句执行异常后打印到日志问题

    Mybatis的sql语句执行异常后打印到日志问题

    文章介绍了一种Mybatis异常日志打印方案,主要通过Mybatis拦截器获取执行的sql语句,并利用ThreadLocal存储,以避免多线程下的sql语句覆盖问题,当异常发生时,从ThreadLocal中取出sql语句并打印到单独的日志文件中,方便数据恢复,该方案经过压力测试
    2024-10-10
  • mybatis 使用concat 模糊查询方式

    mybatis 使用concat 模糊查询方式

    这篇文章主要介绍了mybatis 使用concat 模糊查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java中Hashtable类与HashMap类的区别详解

    Java中Hashtable类与HashMap类的区别详解

    Hashtable的应用非常广泛,HashMap是新框架中用来代替Hashtable的类,也就是说建议使用HashMap,不要使用Hashtable。可能你觉得Hashtable很好用,为什么不用呢?这里简单分析他们的区别。
    2016-01-01
  • Java线程池复用线程的秘密你知道吗

    Java线程池复用线程的秘密你知道吗

    这篇文章主要为大家详细介绍了Java线程池复用线程的秘密,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望您能够多多关注

    2022-03-03
  • Springboot内外部logback多环境配置详解

    Springboot内外部logback多环境配置详解

    本文主要介绍了Springboot内外部logback多环境配置详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • MyBatis在注解上使用动态SQL方式(@select使用if)

    MyBatis在注解上使用动态SQL方式(@select使用if)

    这篇文章主要介绍了MyBatis在注解上使用动态SQL方式(@select使用if),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • SpringMVC使用RESTful接口案例

    SpringMVC使用RESTful接口案例

    RESTful是一种web软件风格,它不是标准也不是协议,它不一定要采用,只是一种风格,它倡导的是一个资源定位(url)及资源操作的风格,这篇文章主要介绍了SpringBoot使用RESTful接口
    2022-12-12
  • Springboot POI导出Excel(浏览器)

    Springboot POI导出Excel(浏览器)

    这篇文章主要为大家详细介绍了Springboot POI导出Excel,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05

最新评论