Java 如果没有重复项,则添加到链表的前面方法,否则删除重复项
我很难想出链表的添加方法。我的任务是: 在MoveToFront内部实现此方法,即public void add(E项) 班级。该方法的行为如下:当输入不存在于 链接列表,将其添加到前面;否则,请删除现有的 从列表中选择一个,然后重新插入到前面 到目前为止,我所做的是创建一个Java 如果没有重复项,则添加到链表的前面方法,否则删除重复项,java,linked-list,add,singly-linked-list,Java,Linked List,Add,Singly Linked List,我很难想出链表的添加方法。我的任务是: 在MoveToFront内部实现此方法,即public void add(E项) 班级。该方法的行为如下:当输入不存在于 链接列表,将其添加到前面;否则,请删除现有的 从列表中选择一个,然后重新插入到前面 到目前为止,我所做的是创建一个contains和delete方法,该方法将搜索列表中的现有项,然后将其删除。然后它会将该项添加到列表的前面 public int getLength() { Node<E> curNode = firs
contains
和delete
方法,该方法将搜索列表中的现有项,然后将其删除。然后它会将该项添加到列表的前面
public int getLength() {
Node<E> curNode = first;
int count = 0;
while (curNode != null) {
curNode = curNode.next;
count++;
}
return count;
}
public boolean Contains(E item) {
if (first == null) {
return false;
}
Node<E> currentNode = first;
while (currentNode.next != null) {
containCount++;
if (currentNode.item.equals(item)) {
return true;
}
currentNode = currentNode.next;
}
return false;
}
public E Delete(int kth) {
if (kth <= getLength()) {
Node<E> currentNode = first;
for (int i = 1; i < kth; i++) {
currentNode = currentNode.next;
}
currentNode.next = currentNode.next.next;
return currentNode.item;
} else {
return null;
}
}
public void add(E item) {
if (!Contains(item)) {
Node<E> myNode = new Node<E>(item, null);
first = myNode;
} else {
Delete(containCount);
Node<E> myNode = new Node<E>(item, null);
first = myNode;
}
}
public int getLength(){
节点curNode=第一个;
整数计数=0;
while(curNode!=null){
curNode=curNode.next;
计数++;
}
返回计数;
}
公共布尔包含(E项){
if(first==null){
返回false;
}
节点当前节点=第一个;
while(currentNode.next!=null){
containCount++;
if(currentNode.item.equals(item)){
返回true;
}
currentNode=currentNode.next;
}
返回false;
}
公共E删除(int-kth){
如果(kth我认为您没有正确链接节点。在将要插入的节点设置为第一个
节点之前,请将节点的下一个
设置为旧的第一个
,如下所示:
myNode.next = first;
first = myNode;
有几件事:
您可以重写delete(),只需遍历列表并在找到匹配项时删除,而不必两次检查列表中是否包含该项,然后再查找和删除它。然后,您可以在add()方法的开头调用此方法
您应该使用一个简单的实例变量来跟踪列表的大小,每当添加或删除某个项目时,该变量都会更新,然后让getLength()返回该变量。每次查看整个列表的开销太大了
首先,我在代码中看到了一个getLength()方法,它是一个链表,如果你想得到这个问题的长度,那么你就没有得到数据结构
现在,如果我们开始实施,我从要求中看到,您必须以某种方式在前端添加新元素。我将这样做-
创建一个节点并将其链接到当前列表的第一个元素旁边。这将是add方法。您也可以在最后使用此方法,它不会有太大区别
然后开始搜索列表中的元素,如果找到匹配项,则将其删除。确保与前面添加的元素不匹配
你没有说你到底有什么问题。你给我们看的代码有什么不起作用?