数组转链表
程序员文章站
2022-06-05 19:55:54
...
背景
平时在写题时, 经常需要模拟链表数据, 想到能否方便快捷地根据一组数据创建链表, 于是有以下代码
思路
- 临界值判定
- 数组第一个元素作为链表头节点
- 声明临时节点以便缓存上次节点引用
- 实例化并赋值当前节点给上次节点的 next 属性
- 移动临时节点指向, 以便下次获取临时节点
- 最终返回头节点, 而不是临时节点
代码
/**
* 数组转链表
* @param values
* @return
*/
private ListNode getListNode(int... values) {
// 临界值判断
if (values == null || values.length == 0) {
return null;
}
// 第一个元素作为头节点
ListNode head = new ListNode(values[0]);
// 保存当前节点引用
ListNode p = head;
// 从第二个元素开始遍历
for (int i = 1; i < values.length; i++) {
// 创建节点
ListNode tmp = new ListNode(values[i]);
// 关联到上个节点
p.next = tmp;
// 更新下次关联的节点
p = tmp;
}
// 最终返回头节点, 而不是临时的 p
return head;
}
/**
* 数组转链表
*/
@Test
public void testGetListNode() {
System.out.println(getListNode(1, 2, 3, 4));
}
总结
当某个功能频繁需要手动实现时, 考虑抽取为方法, 统一调用, 提高开发效率
上一篇: 一篇文章带你快速了解Sass
下一篇: 冒泡排序 -- 稳定算法