【发布时间】:2014-03-30 00:34:43
【问题描述】:
我在将键盘输入的数据存储到我的链接列表 Add 方法时遇到问题。这个程序的重点是使用链表实现一个队列。唯一的一点是,类构造函数接受列表中每个节点的两个参数(它们的名称和链接)。
到目前为止,这是我的类文件...
public class linklist_MP
{
//Private intance variables and links
private linklist_MP front;
private linklist_MP rear;
private linklist_MP link;
private linklist_MP previous;
private String data;
private int count = 0;
private boolean flag;
//Construtor for Each Node's link and parameter type
public linklist_MP(String input, linklist_MP intiallink)
{
data = input;
link = intiallink;
}
public boolean listEmpty()
{
flag = false;
if(count == 0)
{
flag = true;
}
return flag;
}
public void addList(String input)
{
//Creating new node with read input
//linklist_MP node = new linklist_MP(input, null);
if(count == 0)
{
front = new linklist_MP(input, front);
}
else
{
previous = front;
while(previous.link != null)
{
previous = previous.link;
}
rear = previous;
rear.link = new linklist_MP(input, null);
}
count++;
}
public String toString()
{
String result = data + " ";
if (link != null)
{
result += link.toString();
}
return result;
}
}
这是我的驱动程序文件,它使我的类成为一个对象并存储在用户数据中..
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;
public class linklistDriver_MP
{
public static void main(String[] args)
{
String input;
Scanner keyboard = new Scanner(System.in);
System.out.println("Just add a String: ");
input = keyboard.nextLine();
linklist_MP object = new linklist_MP(input, null);
object.addList(input);
System.out.println("Add another String: ");
input = keyboard.nextLine();
object.addList(input);
System.out.println("\nTime to print the list out: ");
object.toString();
}
}
基本上,当我在驱动程序文件中调用打印方法以打印链接列表中的所有节点时,什么都没有出现,并且列表打印为空白。我试图弄清楚为什么会这样,因为我使用驱动程序中的对象来添加用户在键盘中输入的两个字符串,因为调用 add 方法......提前致谢!
【问题讨论】:
-
您的链表类已全部提升到您应该完全重新开始的地步。您需要查看如何实现 LinkedList。一方面,这条线毫无意义:
front = new linklist_MP(input, front);。front为 null,因此您只需在front节点中将“initiallink”设置为 null。我不知道那应该是什么意思,但我很确定这不是你想要的。 -
大声感谢您的意见。但是那行:
front = new linklist_MP(input, front);是标识第一个节点,因为它指向链表中的自身,其中链表中的最后一个节点的链接为空。至少这就是我想要的,因为我只能添加到列表的后面。 -
我了解
front和rear应该是什么。我不明白为什么你有link作为一个字段。就像我说的,当你调用new linklist_MP(input, front);时,front是null,因此它将front的link设置为null。 -
是的,我明白你的意思 Jared。现在可以理解为什么几乎每个链表实现示例都涉及一个“无链接字段参数”的构造函数。我认为通过我改变我的构造函数并将我的指针设置为 null 就像你说的那样,对于它的简单结构来说,这会变得不那么复杂
标签: java object linked-list queue