iT邦幫忙

0

Java 鏈結串列

  • 分享至 

  • xImage

insertList
(1) 鏈結串列的新增資料功能,請修改 insertList()方法,資料值不允許重複。

public void insertList(int data) {
        Node new_node, p, q;
        new_node = new Node(data);
        p = q = first;

        while (p != null && p.data < data) {
            q = p;
            p = p.next;
        }
        new_node.next = p;

        if (p == first)
            first = new_node;
        else
            q.next = new_node;
}

deleteList
(2) 鏈結串列的刪除資料功能,請修改 deleteList()方法,如果資料data順利被刪除,則傳回true;如果data未出現在串列之中,則傳回false表示刪除失敗。

public void deleteList(int data) {
    Node p, q;

    p = q = first;

    while (p != null && p.data != data) {
        q = p;
        p = p.next;
    }

    if (p != null) {
        if (p == first)
            first = p.next;
        else
            q.next = p.next;
    }
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-12-18 09:42:20
public void insertList(int data) {
        Node new_node, p, q;
        new_node = new Node(data);
        p = q = first;

        while (p != null && p.data < data) {
            q = p;
            p = p.next;
        }
        new_node.next = p;

        if (p == first) {
            first = new_node;
        } else {
            if (q.data != new_node.data) {
                q.next = new_node;
            }
        }
}
public boolean deleteList(int data) {
    boolean bret = true;
    Node p, q;

    p = q = first;

    while (p != null && p.data != data) {
        q = p;
        p = p.next;
    }

    if (p != null) {
        bret = true;
        if (p == first) {
            first = p.next;
        } else {
            q.next = p.next;
        }
    } else {
        bret = false;
    }
    
    return bret;
}
看更多先前的回應...收起先前的回應...
linteddy iT邦新手 5 級 ‧ 2021-12-18 11:08:42 檢舉

很感動 謝謝...

linteddy iT邦新手 5 級 ‧ 2021-12-18 11:12:44 檢舉
class Node {
    int data;
    Node next;

    public Node(int n) {
        data = n;
        next = null;
    }
}

class List {
    Node first;

    public List() {
        first = null;
    }

    // insertList
    // (1) 鏈結串列的新增資料功能,請修改 insertList()方法,資料值不允許重複。

    public void insertList(int data) {

        Node new_node, p, q;

        new_node = new Node(data);

        p = q = first;

        while (p != null && p.data < data) {
            q = p;
            p = p.next;
        }

        new_node.next = p;

        if (p == first) {
            first = new_node;
        } else {
            if (q.data != new_node.data) {
                q.next = new_node;
            }
        }
    }

    // deleteList
    // (2) 鏈結串列的刪除資料功能,請修改 deleteList()方法,如果資料data順利被刪
    // 除,則傳回true;如果data未出現在串列之中,則傳回false表示刪除失敗。
    public boolean deleteList(int data) {

        boolean bret = true;

        Node p, q;

        p = q = first;

        while (p != null && p.data != data) {
            q = p;
            p = p.next;
        }

        if (p != null) {
            bret = true;
            System.out.println("true 刪除成功");
            if (p == first) {
                first = p.next;
            } else {
                q.next = p.next;
            }
        } else {
            bret = false;
            System.out.println("false 刪除失敗");
        }

        return bret;
    }

    public void visitList() {
        Node p = first;
        while (p != null) {
            System.out.println(p.data);
            p = p.next;
        }
        System.out.println();

    }
}

public class ListProc {
    public static void main(String args[]) {
        List list = new List();

        int data;
        for (int i = 1; i < 10; i++) {
            data = i * 10 % 23;
            list.insertList(data);
        }
        list.visitList();

        for (int i = 1; i < 5; i++) {
            list.deleteList(i * 20 % 13);
            list.visitList();
        }

    }
}
linteddy iT邦新手 5 級 ‧ 2021-12-18 11:14:52 檢舉

但是這樣是正確的嗎?![![https://ithelp.ithome.com.tw/upload/images/20211218/20135157vXtwi0RFok.png]

是,正確的
https://ithelp.ithome.com.tw/upload/images/20211218/200017871kXKRNzrEi.png

linteddy iT邦新手 5 級 ‧ 2021-12-18 17:50:35 檢舉

可以給我一下您的連結嗎 為啥您可以寫出 她刪除哪一個?
而我只能寫說她刪除了

我有寫額外的 code
請收站內信

我要發表回答

立即登入回答