我正在尝试构建链表,每个节点都有一个整数,即节点的位置,以及一个节点名称的字符串。
public class Node {
public int position;
public Node next;
public String shipname;
public Node(int num, String shipname) {
position = num;
shipname = shipname;
}
public void insert(int x, String shipname) {
Node newNode = new Node(num, shipname);
Node previous = null;
Node current = first;
while (current != null && num < current.position) {
previous = current;
current = current.next;
}
if (previous == null) {
newNode.next = first;
first = newNode;
} else {
previous.next = newNode;
newNode.next = current;
}
}
public void display() {
Node current = first;
while (current != null) {
System.out.println(current.shipname + " " + current.position);
current = current.next;
}
System.out.println(" ");
}
}
有什么理由,为什么这段代码正确地给出位置数据,但是“null”而不是将船名写入屏幕?这是一个简单的输出:
Largest priority to Smallest
null 7
null 4
null 3
答案 0 :(得分:1)
看来您想要这样的代码。
public class LinkedListA<T> {
static class Node<T>{
T data;
Node<T> next;
public Node(T d){
this.data=d;
this.next=null;
}
}
Node<T> head;
public LinkedListA(){
head=null;
}
public void add(T v) {
Node<T> new_node=new Node<T>(v);
if(this.head==null) {
this.head=new_node;
}else {
Node<T> current_node=this.head;
while(current_node.next!=null) {
current_node=current_node.next;
}
current_node.next=new_node;
}
}
public void addLast(T v) {
add(v);
}
public void print() {
Node<T> current_node=this.head;
while(current_node!=null) {
System.out.println(current_node.data);
current_node=current_node.next;
}
}
public static void main(String[] args) {
LinkedListA<Integer> list=new LinkedListA<Integer>();
list.add(10);
list.add(20);
list.add(30);
list.addLast(40);
System.out.println("===LIST=====");
list.print();
}
}
答案 1 :(得分:0)
您的代码有一些错误。例如,Node是节点而不是列表。列表由多个节点组成。所以外部类应该是一个列表,它应该包含节点......
以下是我的单链表的代码:
logger.disabled = 0
请注意,我在列表类中声明并使用节点。
答案 2 :(得分:0)
使用&#34; this.shipname&#34;编辑构造函数和&#34; this.position&#34;解决了我的问题。谢谢大家的帮助
{{1}}
答案 3 :(得分:0)
首先,您在构造函数中引用相同的局部变量。
public Node(int num, String shipname) {
position = num;
shipname = shipname;
}
将此更改为assign,
this.shipname = shipname;
所以最终的代码变成了:
public Node(int num, String shipname) {
position = num;
this.shipname = shipname;
}
似乎还有另一个问题,你没有声明变量'first'。 在'insert'方法中将变量'x'更改为'num'。
而Java提供了LinkedList类,你可以看一下。我用Java的LinkedList更新了你的代码。希望它有所帮助。
public class NodeLinkedList {
private class Node {
int position;
String shipName;
Node(int position, String shipName) {
this.position = position;
this.shipName = shipName;
}
}
private LinkedList<Node> nodeList;
NodeLinkedList() {
nodeList = new LinkedList<>();
}
void insert(int position, String name) {
nodeList.add(new Node(position, name));
}
void display(){
for (Node node : nodeList) {
System.out.println(node.shipName + " " + node.position);
}
}
}