因此,我正在制作一个链表,在插入时,我需要保持其顺序。因此,如果要通过此插入从根目录到其路径遍历链表 ->
Insertion: 1 2 3
它应该输出->
Output: 1 2 3
到目前为止,我的代码如下。这些代码所做的全部都是反向输出我的插入内容。所以它打印->
3
2
1
我希望程序通过修改addLast()方法来保持其插入顺序。因此,当我打印“链接列表”时,它的插入方式与插入时相同。
public class LinkedListMeth
{
public static void main(String[] args)
{
FirstLinkedList list = new FirstLinkedList();
list.addLast(1);
list.addLast(2);
list.addLast(3);
list.traverseLast();
}
}
class FirstLinkedList
{
private class Node
{
private Node next;
private int data;
}
private Node last = null;
public void addLast(int d)
{
Node newNode = new Node();
newNode.data = d;
newNode.next = last;
last = newNode;
}
public void traverseLast()
{
Node head = last;
while (head != null)
{
System.out.println(head.data);
head = head.next;
}
}
答案 0 :(得分:0)
如果您要坚持当前的确切设计,那么按从头到尾的顺序打印列表的一种方法是使用递归,如下所示:
public void printFirstLinkedList(Node node) {
if (node == null) return;
printFirstLinkedList(node.next);
System.out.print(node.data + " ");
return;
}
printFirstLinkedList(yourList.last);
答案 1 :(得分:0)
您应保留链接列表的根,以便按插入顺序进行遍历。
这是您代码的编辑版本:
class FirstLinkedList {
private class Node {
private Node next;
private int data;
}
private Node root = null;
private Node last = null;
public void addLast(int d) {
Node node = new Node();
node.data = d;
if (root == null) {
root = node;
root.next = last;
last = root;
} else {
last.next = node;
last = last.next;
}
}
public void traverseLast() {
Node head = root;
while (head != null) {
System.out.println(head.data);
head = head.next;
}
}
}
输出为:
1
2
3