Deleting the Node with a Given ITEM of Information – मानलो कि LIST एक Linked List है और हमें ITEM दिया गया है। हमें उस Node N को Delete करना है जिसमें ITEM है। यदि ITEM कोई Primary Key है तो एक LIST में केवल एक ही ऐसा ITEM हो सकता है जिसे Delete करना है।
इससे पहले कि हम Information ITEM वाले Node N को Delete करें, हमें Node N से पिछले ITEM की LOCATION का पता लगाना होगा। इसके लिए हमें एक Procedure Use करना होगा जो कि Node N की LOCATION LOC का पता लगा,गा और LOC से पहले वाले Node LOCP का पता लगा,गा। यदि N किसी Linked List का पहला ITEM हो तो हमें LOCP = NULL करना होता है और यदि LIST में ITEM ना मिले तो हमें LOC = NULL करना होता है।
एक Pointer PTR का प्रयोग करते हुए ITEM को PTR[INFO] से Compare करते हुए Linked List को Traverse करते हैं। जब Traversing की जा रही हो तब Compare होने वाले Node के पहले के Node का SAVE नाम के एक Variable में Track रखा जाना चाहिए। SAVE व PTR को निम्न Assignment द्वारा Update करना चाहिए-
SAVE = PTR
PTR = PTR[LINK]
Traversing तब तक चलनी चाहिए जब तक कि PTR[INFO] <> ITEM ना हो जाए। दूसरे शब्दों में कहें तो Traversing तब रूकनी चाहिए जब ITEM = PTR[INFO] हो जाए। इस स्थिति में PTR में Node की Location LOC होता है और SAVE में Node N के पहले के Node का Location LOCP होता है। जब Linked List में केवल एक ही Node होता है या जब N पहला Node होता है तब SAVE Variable की जरूरत नहीं होती है। इस Algorithm को हम निम्नानुसार देख सकते हैं-
[code] Algorithm FINDB(INFO, LINK, START, ITEM, LOC, LOCP) This procedure finds the location LOC of the Node N which contains ITEM and the location LOCP of the node preceding N. If ITEM does not appear in the list, then the procedure sets LOC = NULL; and if ITEM appears in the first node, then it sets LOCP = NULL. IF START = NULL then [ If LIST is Empty ] SET LOC = NULL and LOCP = NULL and RETURN [ End of IF Structure ] IF START[INFO] = ITEM then [ ITEM is in first node ] SET LOC = START and LOCP = NULL and RETURN [ End of IF Structure ] SET SAVE = START and PTR = START[LINK] [ Initialize Pointers ] REPEAT Step 5 and 6 WHILE PTR <> NULL IF PTR[INFO] = ITEM then SET LOC = PTR and LOCP = SAVE and RETURN [ End of IF Structure ] SET SAVE = PTR and PTR = PTR[LINK] [ Update Pointers ] [ End of Step 4 Loop ] SET LOC = NULL [ Search Unsuccessful ] EXIT [/code]
उपरोक्त Algorithm उस Node को Find करता है जिसमें ITEM उपलब्ध है। इस Algorithm का प्रयोग करके हम निम्नानुसार एक Algorithm लिख सकते हैं, जिससे किसी LIST के उस Node N को Delete किया जा सकता है जिसमें Search किया जाने वाला ITEM है-
[code] DELETE(INFO, LINK, START, AVAILABLESPACE, ITEM) This Algorithm deletes from a Linked List the node N which contains the given ITEM of information. [Use Previous Procedure to find the location of N and its preceding node] CALL FINDB(INFO, LINK, START, ITEM, LOC, LOCP) IF LOC = NULL then PRINT ‘ITEM is not in the LIST’ EXIT IF LOCP = NULL then SET START = START[LINK] [ Delete First Node ] ELSE SET LOCP[LINK] = LOC[LINK] [ End of IF Structure ] SET LOC[LINK] = AVAILABLESPACE AVAILABLESPACE = LOC [ Free DELETED Node’s Space ] EXIT [/code]
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Data Structure and Algorithms in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Data Structure and Algorithms in Hindi | Page: 433 | Format: PDF