华为外包java面试题-Java实现单链表的逆序
假设你正在应聘华为外包公司的Java开发岗位,以下是一个可能的面试题案例:
面试题目:Java实现单链表的逆序
问题描述:
请编写一个Java程序,实现对单链表的逆序操作。给定一个单链表的头节点,要求将链表的所有节点反转,并返回反转后的头节点。
示例:
假设链表为:1 -> 2 -> 3 -> 4 -> 5
反转后应该为:5 -> 4 -> 3 -> 2 -> 1
解题思路:
实现单链表的逆序操作可以使用迭代或递归的方法。下面将为大家提供使用迭代的解题思路。
解题步骤:
1. 定义三个指针:prev(记录前一个节点)、current(记录当前节点)、next(记录当前节点的下一个节点)。
2. 初始时,prev指向null,current指向头节点。
3. 在循环中,将current的next指针指向prev,然后将prev指向current,current指向next。
4. 重复上述步骤,直到current指向null(到达链表的末尾)。
Java代码实现:
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public class ReverseLinkedList {
public ListNode reverse(ListNode head) {
ListNode prev = null;
ListNode current = head;
ListNode next = null;
while (current != null) {
next = current.next; // 先保存当前节点的下一个节点
current.next = prev; // 当前节点的next指针指向前一个节点
prev = current; // prev指向当前节点,相当于前移一步
current = next; // current指向下一个节点,相当于前移一步
}
return prev; // prev指向原链表的最后一个节点,即反转后的头节点
}
// 测试
public static void main(String[] args) {
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
ReverseLinkedList solution = new ReverseLinkedList();
ListNode reversedHead = solution.reverse(head);
// 打印反转后的链表
while (reversedHead != null) {
System.out.print(reversedHead.val + " -> ");
reversedHead = reversedHead.next;
}
System.out.print("null");
}
}
这是一个典型的面试题目,面试官可能会根据你的解答展开更多问题,例如如何使用递归实现链表逆序,或者如何处理特殊情况(如空链表)。在面试过程中,除了正确的解答问题,展示良好的沟通和思考能力也是非常重要的。希望以上面试题案例对你有所帮助!
猜你喜欢LIKE
相关推荐HOT
更多>>如何撤销已经推送(push)到远端仓库的提交(commit)信息?
撤销提交信息: 首先,通过git log查看提交信息,以便获取需要回退至的版本号; 然后,通过git reset --soft <版本号>重置至指定版本的提交,达...详情>>
2022-11-17 11:29:00你了解哪些加密算法?
RSA RSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。MD5的文本或者一行字符,这行...详情>>
2022-11-08 17:54:54final在Java中有什么作用?
如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。如果引用时类的成员变量,则...详情>>
2022-10-26 16:37:00说一下类加载的执行过程
加载指的是将类的class文件读入到内存中,并为之创建一个java.lang.Class对象。 类的加载由类加载器完成,类加载器由JVM提供,开发者也可以通过...详情>>
2022-10-11 16:38:00数据库有哪些锁?
使用 COMMIT 或 ROLLBACK 语句释放锁。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。表级锁...详情>>
2022-10-11 14:51:00Java培训问答更多>>
新Java行业疑惑解答:Java的内存管理是如何工作的?
新java script是什么?为什么要学java script
新java和大数据哪个好?未来哪个职业发展更好
新java培训班多久能学会?培训周期大概多久
新java script和java的区别有哪些?如何区分
新java script的数据类型主要有哪些?怎样学的更快
新c语言与java区别在哪里?去培训机构学哪个比较好
Java面试题库 更多>>
华为外包java面试题-Java实现单链表的逆序
Java程序员面试题
Java面试题及答案
什么是线程的上下文切换?
如何撤销已经推送(push)到远端仓库的提交(commit)信息?
你了解哪些加密算法?
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区