एक दोगुनी लिंक की गई सूची एक डेटा संरचना है जिसमें प्रत्येक नोड के पास सूची में और उसके आगे value
दोनों के साथ "लिंक" है । उदाहरण के लिए, मान 12, 99 और 37 के साथ निम्नलिखित नोड्स पर विचार करें:previous
nodes
यहां, मान 12 के साथ नोड्स और 99 उनके संबंधित next
नोड्स को इंगित करते हैं , मान 99 और 37 के साथ । 37 मान वाले नोड का कोई next
सूचक नहीं है क्योंकि यह सूची में अंतिम नोड है। इसी तरह, मान 99 और 37 वालेprevious
नोड्स उनके संबंधित नोड्स, 12 और 99 को इंगित करते हैं , लेकिन 12 का कोई previous
संकेतक नहीं है क्योंकि यह सूची में पहला नोड है।
स्थापित करना
व्यवहार में, एक नोड के "लिंक" को मेमोरी में पिछले और अगले नोड के स्थानों के संकेत के रूप में लागू किया जाता है। हमारे उद्देश्यों के लिए, "मेमोरी" नोड की एक सरणी होगी और नोड का स्थान सरणी में इसका सूचकांक होगा। एक नोड को फॉर्म के 3-टपल के रूप में माना जा सकता है ( prev value next )
। उपरोक्त उदाहरण, तब ऐसा लग सकता है:
लेकिन यह इस तरह लग सकता है:
किसी भी नोड से शुरू होकर, आप previous
नोड्स को प्राप्त करने के लिए next
लिंक ( लाल तीर के मूल के रूप में दिखाया गया है) का पालन कर सकते हैं जो इसे पूर्ववर्ती करते हैं और लिंक (हरा तीर) बाद में सभी नोड्स के मान प्राप्त करने के लिए नोड्स का पता लगाने के लिए: [12, 99, 37]
।
ऊपर दिए गए पहले आरेख को एक सरणी में दर्शाया जा सकता है [[null, 12, 1], [0, 99, 2], [1, 37, null]]
। दूसरा, तब होगा [[2, 99, 1], [0, 37, null], [null, 12, 0]]
।
चुनौती
एक प्रोग्राम लिखें जो इनपुट के रूप में नोड्स की एक सरणी और एक नोड और रिटर्न के सूचकांक के रूप में लेता है, सूची क्रम में, नोड्स के मूल्यों को समान रूप से लिंक की गई सूची में।
एक उलझन
"मेमोरी" में हमेशा सिर्फ एक सूची के नोड्स नहीं होंगे। इसमें कई सूचियाँ हो सकती हैं:
उपरोक्त सरणी में आपकी सुविधा के लिए तीन दोहरे लिंक किए गए रंग, कोडित हैं:
अनुक्रमित पर नोड्स
7
,10
,1
,4
,3
,12
(केवल दिखाnext
अव्यवस्था कम करने के लिए लिंक, विस्तार करने के लिए क्लिक करें):इस सरणी और इनमें से किसी भी अनुक्रमणिका को देखते हुए, आपके प्रोग्राम को क्रम में, मानों पर लौटना चाहिए
[0, 1, 1, 2, 3, 5, 8]
।सूचकांक पर नोड
9
:सूचकांक को देखते हुए
9
, आपका कार्यक्रम वापस आ जाना चाहिए[99]
।अनुक्रमित पर नोड्स
11
,8
,0
,6
,2
:इनमें से किसी एक सूचकांक को देखते हुए इसे वापस लौटना चाहिए
[2, 3, 5, 7, 11]
।
नियम
इनपुट
आपका कार्यक्रम इनपुट के रूप में प्राप्त होगा:
(नोड्स की एक सूची (ऊपर वर्णित के रूप में 3-ट्यूपल्स), जहां 1 𝒏 ≤, 1,000, किसी भी सुविधाजनक प्रारूप में, उदाहरण के लिए सरणियों का एक सरणी, लंबाई 3 of के साथ पूर्णांकों का "फ्लैट" सरणी, आदि।
3-tuples 'तत्व किसी भी क्रम में हो सकता है:
( prev value next )
,( next prev value )
, आदि प्रत्येक नोड के लिए,prev
औरnext
हो जाएगाnull
(या किसी अन्य सुविधाजनक मूल्य, जैसे-1
), एक दोगुना लिंक्ड सूची में पहला या अंतिम नोड, या का एक मान्य सूचकांक का संकेत सूची, या तो 0- या 1-आधारित के रूप में सुविधाजनक है।value
एक हस्ताक्षरित 32-बिट पूर्णांक या आपकी भाषा का समर्थन करने वाला सबसे बड़ा पूर्णांक, जो भी छोटा हो, होगा।सूची में नोड का सूचकांक The (1)। संकेतित नोड एक दोहरी लिंक की गई सूची में पहला नोड हो सकता है, अंतिम नोड, एक मध्य नोड या केवल नोड हो सकता है।
इनपुट सूची (1) में पैथोलॉजिकल डेटा हो सकता है (उदाहरण के लिए कई अन्य नोड्स आदि द्वारा इंगित किए गए चक्र, नोड्स), लेकिन इनपुट इंडेक्स (2) हमेशा एक नोड को इंगित करेगा जिसमें से एकल, अच्छी तरह से निर्मित आउटपुट हो सकता है निष्कर्ष निकाला।
उत्पादन
आपके कार्यक्रम को दोहरी लिंक की गई सूची के नोड्स के मूल्यों को आउटपुट करना चाहिए, जिसमें सूचकांक at सूची क्रम में एक सदस्य है। आउटपुट किसी भी सुविधाजनक प्रारूप में हो सकता है, लेकिन इसके डेटा में केवल नोड value
s शामिल होना चाहिए ।
जीतना
यह कोड-गोल्फ है । बाइट्स जीत में सबसे छोटा जवाब। मानक खामियां लागू होती हैं।
परीक्षण के मामलों
नीचे, प्रत्येक परीक्षण मामला फॉर्म का है:
X)
prev value next, prev value next, ...
index
value value value ...
... जहां X
परीक्षण मामले की पहचान करने के लिए एक पत्र है, दूसरी पंक्ति इनपुट सूची है, तीसरी पंक्ति 0-आधारित इनपुट इंडेक्स है, और चौथी पंक्ति आउटपुट है।
A) null 12 1, 0 99 2, 1 37 null
1
12 99 37
B) 2 99 1, 0 37 null, null 12 0
1
12 99 37
C) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
4
0 1 1 2 3 5 8
D) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
0
2 3 5 7 11
E) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
9
99
F) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
18
80 80 67 71
G) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
8
1 -1 1 -1 1 -1 1
H) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
4
1 3 6 10 15 21
I) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
14
3 1 4 1 5 9 2 6 5 3
J) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
17
8 6 7 5 3 0 9
K) 4 11 0, null 22 3, null 33 3, 1 44 4, 3 55 null, 7 66 7, 6 77 6
3
22 44 55
L) null -123 null
0
-123