【问题标题】:Linked List object is not storing string input which results in a blank Link list链接列表对象未存储字符串输入,这会导致链接列表为空白
【发布时间】: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); 是标识第一个节点,因为它指向链表中的自身,其中链表中的最后一个节点的链接为空。至少这就是我想要的,因为我只能添加到列表的后面。
  • 我了解frontrear 应该是什么。我不明白为什么你有link 作为一个字段。就像我说的,当你调用new linklist_MP(input, front); 时,frontnull,因此它将frontlink 设置为null
  • 是的,我明白你的意思 Jared。现在可以理解为什么几乎每个链表实现示例都涉及一个“无链接字段参数”的构造函数。我认为通过我改变我的构造函数并将我的指针设置为 null 就像你说的那样,对于它的简单结构来说,这会变得不那么复杂

标签: java object linked-list queue


【解决方案1】:

你的程序没有输出任何东西的原因是你调用了 toString() 方法,但是你从来没有打印这个方法的输出。

但是,看起来您的链表结构似乎也有问题。本质上,链表数据结构由一条数据和到序列中下一个节点的链接组成。

但是,您的节点中有多个其他节点链接。您应该尝试简化您的设计,因为链表是一种非常简单的数据结构,但我认为您过于复杂了。

【讨论】:

  • 说这过于复杂是轻描淡写(对不起,曼尼的评论,但我想,cmets 有什么用,对吧?)。
  • 哈哈好吧,cmets 来这里是有原因的,我的朋友和你在这里只是诚实。但说真的贾里德,谢谢你直率的诚实!哈哈,我需要它,所以这样的问题不会再出现了!
  • 我同意你的观点,Kyle,我在这里肯定把事情复杂化了。
猜你喜欢
  • 2012-01-13
  • 2011-05-19
  • 2022-01-20
  • 1970-01-01
  • 2013-11-30
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多