簡體   English   中英

刪除鏈接列表的第一個元素

[英]Delete the first element of a linked list

我已經在此頁面上搜索了同樣的問題,並且找到了一個可行的解決方案。 但是我仍然有一個問題,該程序不會刪除列表中的第一個元素。 在方法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;
        }
    }
}

我知道了! remove()方法中的if-Function更改為(p.next != null && index != 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM