Я уже искал одинаковые проблемы на этой странице, и я нашел решение, которое должно работать. Но у меня все еще есть проблема, что программа не удаляет первый элемент в моем списке. В методе remove() head = head.next; должен удалить первый элемент.Удалить первый элемент связанного списка
Если я запустить программу вывод: пустой список: [5,7] вместо пустого списка: [6,7]
Может кто-то пожалуйста подскажите, что не так с головой элемента или моей реализации.
public class HeadList {
Entry head;
Entry tail;
public HeadList() {
head = null;
tail = null;
}
public void add(int info) {
Entry p = new Entry(null, null,info);
if(head == null && tail == null){
head = p;
tail = p;
}else{
tail = tail.next = p;
}
}
public int remove(int index) {
Entry p = head;
for(int i=1; i < index; i++) {
p = p.next;
}
if(p.next != null && p.next != head){
int ausgabe = p.elem;
p.next = p.next.next;
return ausgabe;
}else if(index == 0){
int ausgabe = p.elem;
head = head.next;
return ausgabe;
}
else return 0;
}
private void setHead(Entry newHead) {
//TODO
}
public void reverse() {
//TODO
}
public String toString() {
String out = "[";
if (head != null) {
out += head.elem;
Entry tmp = head.next;
while (tmp != null) {
out = out + "," + tmp.elem;
tmp = tmp.next;
}
}
out += "]";
return out;
}
public static void main(String[] args) {
HeadList l = new HeadList();
l.add(5);
l.add(6);
l.add(7);
l.remove(0);
System.out.println("empty list: " + l);
// Test implementation
}
class Entry {
Entry first;
Entry next;
int elem;
public Entry(Entry first, Entry next, int elem) {
this.first = first;
this.next = next;
this.elem = elem;
}
}
}
Я понял! Изменен if-Function в remove() на (p.next! = Null && index! = 0) – Philipp
Вы можете ответить на свой вопрос и пометить его как ответ. – LeHill