【发布时间】:2017-02-12 15:13:24
【问题描述】:
我在 Java 中创建一个链表,而不是使用 Java API Linked List 类。这是创建一个显示多项式的计算器,旨在将数据存储在链表中。多项式旨在添加到列表的头部,然后按大小顺序显示(但这还不起作用)。我正在努力的部分是 addTerm 方法 - 因为这应该遍历列表添加到列表的头部。我对Java并不陌生,但我只有基本知识。如果有人可以提供帮助,将不胜感激!
import java.util.Iterator;
import javax.xml.soap.Node;
public class PolyData implements Polynomial {
private static class Node{
Node next;
public Term term;
}
private static Node head;
public Iterator<Term> iterator() {
// TODO Auto-generated method stub
return new LinkedList(head);
}
public static void insertAtHead(Term term) {
Node newNode = new Node();
newNode.term = term;
newNode.next = head;
head = newNode;
}
public static void insertAfter(Term term, Node insertPoint) {
Node newNode = new Node();
newNode.term = term;
newNode.next = insertPoint.next;
insertPoint.next = newNode;
}
@Override
public void addTerm(Term term) {
Iterator<Term> iter = LinkedList.iterator();
while (iter.hasNext()) {
Node newNode = new Node();
newNode.term = term;
newNode.next = head;
head = newNode;
}
}
public void addPoly(Polynomial poly) {
//not implemented
}
@Override
public void multiplyByPoly(Polynomial poly) {
//not implemented
}
public static class LinkedList implements Iterator<Term> {
private Node current;
private LinkedList(Node start) {current=start;}
public static Iterator<Term> iterator() {
// TODO Auto-generated method stub
return new LinkedList(head);
}
@Override
public boolean hasNext() {return (current != null);}
@Override
public Term next() {
Term result = current.term;
current = current.next;
return result;
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported");
}
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
}
【问题讨论】:
-
public static Iterator
iterator() { // TODO 自动生成的方法存根 return new LinkedList(head); } head 的声明在哪里? -
@efekctive 其私有静态节点头;
-
它不应该是静态的。否则它将被所有列表共享。其次,您发布的代码应该编译或查看所有部分
-
“我正在苦苦挣扎的部分是 addTerm 方法”——你能详细说明一下吗?
-
该方法为列表中的每个术语添加一个新术语。所以它最终每次都加 N。我认为
标签: java linked-list