作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我刚刚开始用 Java 编写双链表。由于某种原因,当我创建链接列表时,页眉没有指向页脚(或者至少我不认为是)。
当我创建链表时,我只想创建一个页眉和页脚,页眉指向页脚,页脚指向页眉:
public class ListNode //inner class
{
T data;
ListNode prev;
ListNode next;
public ListNode(T data, ListNode prev, ListNode next)
{
this.data = data;
this.prev = prev;
this.next = next;
}
}
ListNode header;
ListNode footer;
public LinkedList()
{
header = new ListNode(null, null, footer);
footer = new ListNode(null, header, null);
}
我运行了一个简单的测试,只是为了看看这是否有效(这仍然在 LinkedList 类中):
public void test()
{
if(header.next == footer)
{
System.out.println("reached");
}
if(footer.prev == header)
{
System.out.println("reached2");
}
}
public static void main(String args[])
{
LinkedList<Integer> list = new LinkedList<Integer>();
list.test();
}
输出:达到2
所以说页脚的前一个指针指向页眉,但页眉没有指向页脚。我在这里错过了一些非常愚蠢的东西吗?
最佳答案
错误是,当创建对象 header
时,footer
不存在,因此您只需将 null 传递给参数 next
header = new ListNode(null, null, footer);//At this moment, footer is not initialized, so it is null
footer = new ListNode(null, header, null);//Only here, footer is created!
所以你可以使用setter方法修复它
header = new ListNode(null);
footer = new ListNode(null);
header.setNext(footer);
footer.setPrev(header);
关于java - 从头开始的链表。页眉和页脚有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656445/
我是一名优秀的程序员,十分优秀!