任何人都可以告诉我下面的代码insertq方法有什么问题:当我只有2个输入10和20时工作正常。 使用插入方法,我能够正确插入数据,但是它的LIFO。我正在尝试在这里做先进先出。 我想在列表中插入多个元素,并希望以FIFO格式显示。
/**
* LinkedList
* @author ashish
*
*/
class Node {
int data;
Node next;
Node(int data) {
this.data = data;
}
}
public class LinkedList {
static Node root;
Node temp = null;
public void insert(int data) {
if (root == null) {
root = new Node(data);
}
else {
temp = root;
root = new Node(data);
root.next = temp;
}
} // end of insert
public void insertq(int data) {
if (root == null) {
root = new Node(data);
}
else {
temp = root;
// temp.next = new Node(data);
// root = temp;
root = new Node(data);
temp.next = root;
root = temp;
}
} // end of insert
public void display(Node node) {
while (node != null) {
System.out.println(node.data);
node = node.next;
}
}
/**
* @param args
*/
public static void main(String[] args) {
LinkedList list = new LinkedList();
// list.insert(10);
// list.insert(20);
// list.insert(30);
// list.insertq(10);
//Insert Data
list.insertq(20);
list.insertq(30);
list.insertq(40);
// list.insert(10);
// list.insert(20);
// list.insert(30);
list.display(root);
}
}
如果需要在列表末尾插入,则需要遍历列表直到到达最后一个元素,或者引用列表的尾部以避免上述情况。
为了落实第1点,
public void insertq(int data) {
if(root == null) {
root = new Node(data);
} else {
temp = root;
while (temp.next != null) {
temp = temp.next;
}
Node newNode = new Node(data);
temp.next = newNode;
}
}
您的insertq()
方法的问题在于它正在执行LIFO插入策略。 您已经有了一个将使用FIFO策略插入的方法,这只是普通insert()
方法。 因此,如果要按 FIFO 顺序迭代列表,请使用insert()
。
我使用以下代码测试了insert
,并验证它实际上是从根开始使用 LIFO 顺序显示的:
LinkedList list = new LinkedList();
list.insert(10);
list.insert(20);
list.insert(30);
list.insert(40);
list.insert(50);
list.display(list.root);
50
40
30
20
10
演示
下面的代码对我有用:
/**
* LinkedList
* @author ashish
*
*/
class Node
{
int data;
Node next;
Node(int data)
{
this.data=data;
}
}
public class LinkedList {
static Node root;
Node temp=null;
public void insert(int data)
{
if(root==null)
{
root=new Node(data);
}
else
{
temp=root;
root=new Node(data);
root.next=temp;
}
}//end of insert
public void insertq(int data)
{
if(root==null)
{
root=new Node(data);
}
else
{
temp=root;
while(temp.next!=null)
{
temp=temp.next;
}
Node newNode=new Node(data);
temp.next=newNode;
}
}//end of insert
public void display(Node node)
{
while(node!=null)
{
System.out.println(node.data);
node=node.next;
}
}
/**
* @param args
*/
public static void main(String[] args) {
LinkedList list=new LinkedList();
// list.insert(10);
// list.insert(20);
//list.insert(30);
list.insertq(10);
list.insertq(20);
list.insertq(30);
list.insertq(40);
// list.insert(10);
// list.insert(20);
// list.insert(30);
list.display(root);
}
}