जांचें कि लिंक की गई सूची का तत्व मौजूद है या नहीं

मैं यह निर्धारित करने की कोशिश कर रहा हूं कि मूल्य लिंक में सदस्य है या नहीं। यदि यह एक सदस्य है, तो यह सच हो जाएगा अन्यथा यह झूठी वापसी करता है। मैं ऐसा करने की कोशिश करता हूं

public boolean member(Integer val){
    if(node.val.equals(val) || node.next.val.equals(val)){
        System.out.println("true");
        return true;
    }
    return false;
}

हालांकि, यह केवल सिर के मूल्य और सिर के मूल्य की कीमत की जांच करता है। सभी नोड के मूल्य की जांच करने का दूसरा तरीका क्या होगा?

0
सूची में सभी मूल्यों को देखने के लिए आपको एक लूप का उपयोग करना होगा। ट्यूटोरियल: समय और समय-समय पर वक्तव्य
जोड़ा लेखक Jesper, स्रोत
नोड क्या है?
जोड़ा लेखक sp00m, स्रोत
नोड एक आंतरिक वर्ग है
जोड़ा लेखक user2779065, स्रोत
अगर आपको इस सवाल को नियमित रूप से पूछने की ज़रूरत है तो एक लिंक्ड सूची का उपयोग न करें सबसे अच्छा ऑपरेशन। इसके बजाए एक सेट का प्रयोग करें।
जोड़ा लेखक Bathsheba, स्रोत
नोड कहां से आता है? क्या यह एक आंतरिक विधि है?
जोड़ा लेखक Dropout, स्रोत

5 उत्तर

बस अपनी लिंक्डलिस्ट के माध्यम से रूट नोड और पाश पास करें:

public boolean member(Node root, Integer val){
    Node currentNode = root;//keep track of current node
    while(currentNode != null){
        //switched currentNode.val and val to avoid null pointer exceptions
        if(val.equals(currentNode.val)){
        //if you're looking for nulls...still with the original
        //if(currentNode.val.equals(val)){
            System.out.println("true");
            return true;
        }
        currentNode = root.next();//update current node
    }
    return false;
}
0
जोड़ा
@MarkoTopolnik मुझे यकीन नहीं है कि एनपीई को पकड़ना सबसे अच्छा समाधान होगा ...
जोड़ा लेखक sp00m, स्रोत
val.equals (currentNode.val) currentNode.val null है, तो currentNode.val से बचने के लिए बेहतर उपयोग करें।
जोड़ा लेखक sp00m, स्रोत
@MarkoTopolnik updatttttttttttttttted
जोड़ा लेखक But I'm Not A Wrapper Clas, स्रोत
@ sp00m मैं शून्य सूचक मामले के बारे में सोच रहा था, लेकिन ओपी ने यह नहीं बताया है कि वह इसे कैसे संभालना चाहता है। मुझे लगता है कि सबकुछ जगह पर स्थापित है।
जोड़ा लेखक But I'm Not A Wrapper Clas, स्रोत
@MarkoTopolnik क्षमा करें, मैंने इसे सचमुच 20 सेकंड में लिखा था। अब अच्छा होना चाहिए
जोड़ा लेखक But I'm Not A Wrapper Clas, स्रोत
@ sp00m जब तक कॉलर null की खोज नहीं कर रहा है!
जोड़ा लेखक Marko Topolnik, स्रोत
@ sp00m अगर आप शून्य-प्रविष्टियों के अस्तित्व की अनुमति देते हैं, तो आपको शून्य-प्रविष्टियों की खोज करने की अनुमति देनी होगी। मोहम्मद का कोड मानता है कि नल की अनुमति नहीं है, और यह एक उचित धारणा है।
जोड़ा लेखक Marko Topolnik, स्रोत

रिकर्सन के बिना ठीक है:

public boolean member(Integer val){
  Node current = node;
  while (current != null) {
    if (current.val.equals(val)) {
      return true;
    } else {
      current = current.next;
    }
  }
  return false;
}
0
जोड़ा
जावा में बड़ी सूचियों के लिए अक्षम। कोई पूंछ रिकर्सन नहीं।
जोड़ा लेखक duffymo, स्रोत
अलविदा अलविदा ...
जोड़ा लेखक Bathsheba, स्रोत
आह अच्छा। इसे सिर्फ एक ताज़ा करने की जरूरत है। लेकिन हाँ, यह सिर्फ लाल बैकग्राउंड के साथ सभी के लिए दृश्यमान रहता है।
जोड़ा लेखक Marko Topolnik, स्रोत
जब आप कर सकते हैं रिकर्सन से बचें। आप इसे से बच सकते हैं।
जोड़ा लेखक Maroun, स्रोत
क्षमा करें दोस्तों, मैंने इसे संपादित किया ;-) मेरी डबल पोस्ट लॉल के साथ सभी भ्रम के लिए खेद है
जोड़ा लेखक Blub, स्रोत
नहीं, मैंने दूसरे को हटा दिया, यह अभी भी प्रदर्शित हो रहा है ??
जोड़ा लेखक Blub, स्रोत
रिकर्सन वास्तव में असफल है। या तो बस इसके माध्यम से चक्र या शामिल है() विधि का उपयोग करें ..
जोड़ा लेखक Dropout, स्रोत

ऐसा इसलिए है क्योंकि आप लूप के अंत में नोड मान में वृद्धि नहीं कर रहे हैं। अंत की जांच करने के लिए एक शून्य जांच भी करें।

        public boolean member(Integer val){
            if(node.next!=null){
            if(node.val.equals(val) || node.next.val.equals(val)){
                System.out.println("true");
                node = node.next;//incrementing the node value 
                return true;
            }
            return false;
        }
    }
    else {
    if( node.val.equals(val)){
    return true;
    }
else{
return false;
}
    }
0
जोड़ा
@downvoter, डाउनवोट क्यों, त्रुटि पर एक टिप्पणी की सराहना की जाएगी
जोड़ा लेखक user1801279, स्रोत
{
    if (s.length() == 0) {
        rvFriendsList.setVisibility(View.VISIBLE);
        rvSearch_Friends.setVisibility(View.GONE);
        FriendsType ="actual";
    }
    if (s.length() >= 1) {
        FriendsType ="search";
        rvFriendsList.setVisibility(View.GONE);
        rvSearch_Friends.setVisibility(View.VISIBLE);
        rvSearch_Friends.bringToFront();
        btnCancel.setTextColor(getResources().getColor(R.color.red));
        String searchString = s.toString().toLowerCase(Locale.getDefault());
        Log.d("@w2w2w2w", "" + searchString);
        int realtext = searchString.length();
        linkedList_SearchUser.clear();
        for (int i = 0; i < linkList_GetAllContacts.size(); i++) {
            String currentString = linkList_GetAllContacts.get(i).get("first_name").toString();
            if (realtext <= currentString.length()) {
                if (searchString.equalsIgnoreCase(currentString.substring(0, realtext))) {
                    linkedList_SearchUser.add(linkList_GetAllContacts.get(i));
                    hype1 = new Custom_Adapter_GetAllContacts((Activity) context, linkedList_SearchUser);
                    LinearLayoutManager llm = new LinearLayoutManager(context);
                    llm.setOrientation(LinearLayoutManager.VERTICAL);
                    rvSearch_Friends.setLayoutManager(llm);
                    rvSearch_Friends.setAdapter(hype1);
                }
            } else {
                hype1.notifyDataSetChanged();
            }
        }
    }
}
0
जोड़ा

यह समाधान यह निर्धारित करने के लिए एक बूलियन फ़ंक्शन का उपयोग करता है कि क्या लिंक लिंक्ड सूची में मौजूद है या नहीं।

    public boolean doesValExist(int value){
    Node traveler = head;
    while(traveler != null){
        if(traveler.getElement() == value){
            return true;
        }
        traveler = traveler.getNext();
    }
    return false;
}
0
जोड़ा