Java 使用链表和向节点传递元素时遇到问题
在这个具体的例子中,它考虑了两种情况。其中一个我试图把一个节点放在链表的开头,我试图把它放在中间或结尾。这是我的节点类。如果查看我的插入方法,则无法工作的部分是: Node newNode=新节点 newNode.setExponentelement 这里是我试图插入到我的链表以及类中的一些其他方法的地方,这些方法应该可以帮助您了解我的代码的外观Java 使用链表和向节点传递元素时遇到问题,java,object,insert,linked-list,Java,Object,Insert,Linked List,在这个具体的例子中,它考虑了两种情况。其中一个我试图把一个节点放在链表的开头,我试图把它放在中间或结尾。这是我的节点类。如果查看我的插入方法,则无法工作的部分是: Node newNode=新节点 newNode.setExponentelement 这里是我试图插入到我的链表以及类中的一些其他方法的地方,这些方法应该可以帮助您了解我的代码的外观 class List { private Node head; // Points to first element of the list priv
class List {
private Node head; // Points to first element of the list
private int count; // number of elements in the list
// Constructor:
List() {
// Sets head to null and count to zero
head = null;
count = 0;
}
// Inspectors:
// Returns the number of elements in the list
public int size() {
return count;
}
// Modifiers:
// Inserts element at index in the list. Returns true if successful
public boolean insert(int index, Node element) {
if (index < 0 || index > count)return false;
if (index == 0) {
Node newNode = new Node();
newNode.setExponent(element);
count++;
newNode.setLink(head);
head = newNode;
return true;
}
Node walker = head;
for (int i = 1; i < (index - 1); i++)
walker = walker.getLink();
Node newNode = new Node();
newNode.setExponent(element);
newNode.setLink(walker.getLink());
walker.setLink(newNode);
count++;
return true;
}
试试这个:
假设:您正在尝试将节点元素插入LinkedList的索引中
您的插入方法已修改
public boolean insert(int index, Node element) {
//if (index < 0 || index > count)
if (index < 0 || index > count + 1) return false;
if(head == null) {
head = element;
return true;
}
if (index == 0) {
//Node newNode = new Node();
//newNode.setExponent(element);
count++;
element.setLink(head);
//newNode.setLink(head);
head = element;
//head = newNode;
return true;
}
Node walker = head;
//for (int i = 0; i < (index - 1); i++)
for (int i = 1; i < index; i++) {
walker = walker.getLink();
}
//Node newNode = new Node();
//newNode.setExponent(element);
element.setLink(walker.getLink());
//newNode.setLink(walker.getLink());
//walker.setLink(newNode);
walker.setLink(element);
count++;
return true;
}
主要方法:
如果列表为空,并且api的用户尝试在位置3处插入列表,您会期望发生什么情况。此外,当列表中有一项位于索引0处,而您尝试在索引1处插入一项时,请仔细检查您的算法。如果他们尝试在列表为空的位置插入内容,则返回false。至于双重链接,我该怎么做?哦,我现在明白了,我道歉。忽略我关于双链接列表的观点-但是当索引0处有1个项目并且尝试在索引1处插入时,请做一个纸笔练习。我只是不知道语法为什么不起作用。这给了我一个错误,因为我不擅长面向对象编程。错误是当我尝试为新节点赋值时
public boolean insert(int index, Node element) {
//if (index < 0 || index > count)
if (index < 0 || index > count + 1) return false;
if(head == null) {
head = element;
return true;
}
if (index == 0) {
//Node newNode = new Node();
//newNode.setExponent(element);
count++;
element.setLink(head);
//newNode.setLink(head);
head = element;
//head = newNode;
return true;
}
Node walker = head;
//for (int i = 0; i < (index - 1); i++)
for (int i = 1; i < index; i++) {
walker = walker.getLink();
}
//Node newNode = new Node();
//newNode.setExponent(element);
element.setLink(walker.getLink());
//newNode.setLink(walker.getLink());
//walker.setLink(newNode);
walker.setLink(element);
count++;
return true;
}
void print() {
Node travel = head;
while(travel!= null) {
System.out.println(travel.getExponent() + " " + travel.getCoefficient());
travel = travel.getLink();
}
}
public static void main(String args[]) {
Node n1 = new Node(1,2);
List l = new List();
l.insert(0,n1);
Node n2 = new Node(3,2);
l.insert(1,n2);
Node n3 = new Node(4,5);
l.insert(0,n3);
l.print();
}