मान लीजिए कि हमारे पास पूर्णांकों की नेस्टेड सूची है; हमें इसे समतल करने के लिए एक पुनरावर्तक को लागू करना होगा। प्रत्येक तत्व या तो एक पूर्णांक, या एक सूची है। उस सूची के तत्व पूर्णांक या अन्य सूचियाँ भी हो सकते हैं। तो अगर इनपुट [[1, 1], 2, [1, 1]] जैसा है, तो आउटपुट [1, 1, 2, 1, 1]
होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
इनिशियलाइज़िंग सेक्शन में, यह नेस्टेड लिस्ट लेगा, यह इस प्रकार काम करेगा -
-
रेस को खाली सूची के रूप में सेट करें, अनुक्रमणिका:=0, getVal (नेस्टेडलिस्ट) पर कॉल करें
-
getVal() नेस्टेडइंटर लेगा, यह इस तरह काम करेगा -
-
मेरे लिए नेस्टेडइंटर में
-
अगर मैं एक पूर्णांक हूं, तो i को रेस ऐरे में डालें, अन्यथा getVal (i सूची) को कॉल करें
-
-
अगली () विधि इंडेक्स द्वारा इंगित मान लौटाएगी, और इंडेक्स को 1 से बढ़ाएगी
-
हैनेक्स्ट () सही लौटेगा, जब इसके आगे कोई तत्व होगा, अन्यथा गलत
उदाहरण (पायथन)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
class NestedIterator(object): def __init__(self, nestedList): self.res = [] self.index = 0 self.getVal(nestedList) #print(self.res) def getVal(self,NestedList): for item in NestedList: if isinstance(item, int): self.res.append(item) else: self.getVal(item) def next(self): self.index+=1 return self.res[self.index-1] def hasNext(self): if self.index == len(self.res): return False return True ob = NestedIterator([[1,1],2,[1,1]]) while ob.hasNext(): print(ob.next())
इनपुट
[[1,1],2,[1,1]]
आउटपुट
1 1 2 1 1