java - 链表反向功能在java中不起作用
问题描述
我编写了一个自定义方法来使用递归打印链表的反向,但它给出了一些随机结果。
公共类节点{
public int data;
Node next;
public Node(int data) {
super();
this.data = data;
}
public class NodeImpl {
public void reverse() {
Node n = head;
rev(n);
}
private void rev(Node n) {
while(n.next != null) {
n = n.next;
rev(n);
System.out.println(n.data);
}
}
} }
在主班
nodeImpl.insert(3);
nodeImpl.insert(5);
nodeImpl.insert(7);
nodeImpl.insert(3);
nodeImpl.reverse();
解决方案
你的while
陈述应该是一个if
陈述。递归将打印列表的反向,然后反向减去最后一个元素,然后反向减去最后两个......
试试这个:
private void rev(Node n) {
if(n.next != null) {
rev(n.next);
}
System.out.println(n.data);
}
推荐阅读
- xamarin - Xamarin Forms 将不同字体大小的标签垂直对齐到同一基线
- ldap - Keycloak - 将用户与 LDAP 同步的问题
- android - 如何自定义 Snackbar 中操作按钮的样式
- r - 从 agrep 中提取子字符串匹配
- c# - 为包含不同数量地址的 JSON 文件创建 JSON 模式
- javascript - 如何从父类而不是子类中删除锚标记?
- javascript - Promise 的执行顺序
- css - 响应式 SVG 蒙版
- java - Selenium WebDriver 代码无法跟踪窗口中的元素,没有标题或 URL
- ios - 更新表视图后不起作用。为什么会这样?