Я понимаю, что есть несколько хороших нитей уже существующих, которые обсуждают, как реализовать связанный список в Java, но я не могу показаться, чтобы найти тот, который не использует конструктор, как это,Как вручную реализовать Связанный список в Java без использования конструктора?
public LinkList() {
Link = null;
}
или что-то в этом роде. Тем не менее, я не сделал этого в своем коде, и поэтому у меня возникли проблемы с написанием нескольких методов.
У меня есть класс, называемый Link, который содержит следующий код, заметки без конструктора, как один отображается выше:
public class Link {
private Link next = null;
private String value = null;
public Link getNext(){
return next;
}
public void setNext(Link nextLink){
next = nextLink;
}
public String getValue(){
return value;
}
public void setValue(String aValue){
value = aValue;
}
}
, а затем у меня LinkedList
класс, который содержит следующий код:
public class LinkedList {
private Link head = null;
private Link tail = null;
public Link getHead(){
return head;
}
public void setHead(Link aLink){
head = aLink;
}
public Link getTail(){
return tail;
}
public void setTail(Link aLink){
tail = aLink;
}
public boolean isEmpty(){
return(head == null && tail == null);
}
public void addLast(String aString){
Link link = new Link();
link.setValue(aString);
//tail.setNext(link);
if(isEmpty()){
head = link;
}else{
tail.setNext(link);
}
tail = link;
}
public void addFirst(String aString) {
Link link = new Link();
link.setValue(aString);
if(isEmpty()){
tail = link;
}else{
head.setNext(link);
}
head = link;
}
public Link removeFirst(){
Link temp = head;
head = temp.getNext();
temp.setNext(null);
return temp;
}
}
Мой addFirst
метод, и мой isEmpty
метод как, кажется, работает, но мои addLast
и removeFirst
Методы - нет. Я нарисовал картинки, посмотрел на псевдокод и искал по интернету, но я просто не могу понять это.
Мне нужно знать, как получить мои методыи removeFirst
, работая без необходимости добавлять в конструктор в начале, как и все остальные примеры кода, которые я продолжаю видеть.
Вот тесты, они должны пройти:
@Test
public void testRemoveFirst(){
list.addFirst("three");
list.addFirst("two");
list.addFirst("one");
assertTrue("one".equals(list.removeFirst()));
assertTrue("two".equals(list.removeFirst()));
assertTrue("three".equals(list.removeFirst()));
}
@Test
public void testAddLast(){
list.addFirst("three");
list.addFirst("two");
list.addFirst("one");
assertTrue("three".equals(list.removeLast()));
assertTrue("two".equals(list.removeLast()));
assertTrue("one".equals(list.removeLast()));
assertNull(list.removeLast());
}
Почему вы не хотите конструктора? – user2357112
Можете ли вы предоставить тестовый пример, где эти методы не работают? –
(И почему вы думаете, что конструктор имеет какое-либо отношение к вашей проблеме?) – user2357112