-4

みんな。誰でもこの質問を始める方法を手伝ってくれます。私はそれについてあまり明確ではありません。とても感謝しています。

問題は、 SetImpl.javaのaddメソッドとmemberメソッドを 実装することです。追加中は重複を許可しないことを強くお勧めします。これにより、他のメソッドの実装がより困難になります。

以下は、SetImpl.javaに関する Java コーディングです。

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

public class SetImpl<T> implements Set<T>{


    // container class for linked list nodes
    private class Node<T>{
        public T val;
        public Node<T> next;
    }

    private Node<T> root; // empty set to begin with

    // no need for constructor


    // add new element to the set by checking for membership.. if not
    // then add to the front of the list
    public void add(T val){
    }

    // delete element from the list - may be multiple copies.
    public void delete(T val){

    }


    // membership test of list
    public boolean member(T val){

        return false;
    }

    // converts to a list
    public List<T> toList(){
        ArrayList<T> res;
        return res;
    }

    // does simple set union   
    public void union(Set<T> s){

    }

}

誰でもこの質問についてのヒントを教えてもらえますか? どうもありがとう!

初挑戦

private Node < T > root = null;
private Node < T > head = null;
private Node < T > tail = null;
public void add(T val) {
    if (head == null) {
        head = tail = new Node < T > ();
        head.val = val;
        root.next = tail;
        tail = head;
    } else {
        tail.next = new Node < T > ();
        tail = tail.next;
        tail.val = val;
    }
}
4

1 に答える 1

0

ここでは、ロジックをどのように進めるべきかについてのヒントを示します。

public class SetImpl<T> implements Set<T>{


    // container class for linked list nodes
    ///// It is said "Linked list" --> first hint google that
    private class Node<T>{
        public T val;
        public Node<T> next;
    }

    private Node<T> root; // empty set to begin with
    ///// So that's my "root" which means I will have descendants

    // no need for constructor


    // add new element to the set by checking for membership.. if not
    // then add to the front of the list
    // Basically here everything is said. 
    // 1- check membership
    // 2- if true do nothing (as it has been said, it's a Set, if you don't know why I say that google Set Collections
    //if false (which means the val I want to add is not in my set) then I can add it to the Set
    public void add(T val){
    }

    // delete element from the list - may be multiple copies.
    public void delete(T val){

    }


    // membership test of list
    // that's recursive calls. How do you check that? where do you store your values?
    // It's true if your current Node.val attribute == the value OR if the rest of the Nodes has the value as member. Here you really need to know about Linked List
    public boolean member(T val){

        return false;
    }

    // converts to a list
    public List<T> toList(){
        ArrayList<T> res;
        return res;
    }

    // does simple set union   
    public void union(Set<T> s){

    }

}

あなたの実装

private Node < T > root = null;
private Node < T > head = null;
private Node < T > tail = null;
public void add(T val) {
    if (head == null) {
        head = tail = new Node < T > ();
        head.val = val;
        root.next = tail;
        tail = head;
    } else {
        tail.next = new Node < T > ();
        tail = tail.next;
        tail.val = val;
    }
}

私の推測では、このような演習ではフィールドを追加する必要はありません。それはあなたのためにすでに半分焼かれています。リンクされたリストの仕組みを確認してください。私は怠け者なので、Google からの最初の「リンクされたリスト」の結果を提供します。:) 楽しむ

于 2013-07-01T16:05:04.760 に答える