实现一个双向链表的倒置功能(1->2->3 变成 3->2->1)

版权声明: https://blog.csdn.net/bird73/article/details/79948736

代码: https://download.csdn.net/download/bird73/10350235



一共三个java文件


ListNode.java

package com.li;

public class ListNode {
	
	
	private int data;
	
	private ListNode nextList;

	public int getData() {
		return data;
	}

	public void setData(int data) {
		this.data = data;
	}

	public ListNode getNextList() {
		return nextList;
	}

	public void setNextList(ListNode nextList) {
		this.nextList = nextList;
	}

	public ListNode(int data) {
		super();
		this.data = data;
	}


}

ConvertList.java

package com.li;

/**
 * 转换工具类
 */
public class ConvertList {

	/**
	 * 链表转换
	 */
	public static void convertListNode(ListNode node) {
		// 临时节点, 用于反转的节点
		ListNode preListNode = null;

		// 循环交换所有链表数据
		while (node != null) {

			// 临时存储节点
			ListNode item = node.getNextList();

			// 调整节点前后位置
			node.setNextList(preListNode);

			// 将自己保存起来, 后面的元素开始指向自己
			preListNode = node;
			
			// 设置再次循环条件
			node = item;

		}

	}

}

ListNodeTest.java

package com.li;

import org.junit.Test;

public class ListNodeTest {

	@Test
	public void test() {

		// 测试

		// 1. 创建数据
		ListNode listNode1 = new ListNode(1);
		ListNode listNode2 = new ListNode(2);
		ListNode listNode3 = new ListNode(3);
		// 2. 设置链表关系
		listNode1.setNextList(listNode2);
		listNode2.setNextList(listNode3);

		// 3. 循环显示
		System.out.println("----------转换前----------");
		ListNode listNode = listNode1;
		while (listNode != null) {
			System.out.println(listNode.getData());// 打印输出
			listNode = listNode.getNextList();
		}

		// 4. 反转链表
		ConvertList.convertListNode(listNode1);
		

		// 5. 循环显示
		System.out.println("----------转换后----------");
		listNode = listNode3;
		while (listNode != null) {
			System.out.println(listNode.getData());// 打印输出
			listNode = listNode.getNextList();
		}

	}

}

打印结果:


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页