Deleting Frist Node from a Linked List – किसी Linked List में किसी Node के Deletion Steps को Perform करने से पहले हमें कुछ बातों को ध्यान में रखना होता है।
- यदि Linked List Empty हो तो किसी Node का Deletion सम्भव नहीं होता है। इस स्थिति में Output में Underflow Message Print होना चाहिए।
- जिस Recoded के Node को Delete करना होता है, पहले उस Node तक पहुंचने के लिए Traversing करनी पडती है। इसलिए किसी Linked List में तब तक उस Record को Find करना होता है जब तब कि Delete होने वाला Record प्राप्त ना हो जाए। इस काम के लिए हमें हर पिछले Node के Address को Preserve करके रखना होता है।
- यदि Traversing के दौरान हम Linked List के अन्त तक पहुंच जाएं और जो Record Delete करना है, वह प्राप्त ना हो] तो “Item not found” का Message Output में Display होना चाहिए।
- Item के List में प्राप्त हो जाने के बाद उसे Delete करना होता है और Delete होने वाले Item के Space को Free करना होता है ताकि वह Space AVAILABLESPACE Linked List में Add हो सके। यदि हम Space को Free नहीं करते हैं, तो हमारी Linked List द्वारा ली जाने वाली Space AVAILABLESPACE Linked List में उपलब्ध नहीं होती है। यानी हमारी Node द्वारा जो Space Reserve किया गया था वो Space तब भी Reserve रहता है जबकि उस Space को Reserve करने वाले Node को Delete किया जा चुका होता है।
जिस तरह से हम किसी Linked List में तीन तरीके से Data Elements के Nodes को Insert कर सकते हैं, उसी तरह से हम किसी Linked List से किसी Node को तीन तरह से Delete भी कर सकते हैं।
Deletion of First Node
मानलो कि हमारे पास निम्नानुसार कोई Linked List LIST है जिसमें पांच Nodes Node1, Node2, Node3, Node4 व Node5 हैं और हमें इस Linked List के पहले Node Node1 को Delete करना है।
हम जानते हैं कि किसी भी Linked List में START Pointer हमेंशा Linked List की शुरूआत के पहले Node को Point करता है। यानी START में Linked List के पहले Node का Address होता है। यदि हम इस Linked List में से प्रथम Node को Delete करना चाहते हैं तो हमें केवल इतना करना है कि हम START में दूसरे Node का Address Insert कर दें। यानी यदि START Pointer में Node1 के Address के स्थान पर Node2 का Address Store हो जाए, तो प्रथम Node इस Linked List LIST से Free हो जाएगा। अब इस Free Node Node1 द्वारा Reserved Memory को AVAILABLESPACE Linked List में Add करना होगा। ये काम हमारा Operating System कर लेता है।
START Pointer में Node2 का Address देने के बाद START Pointer Node2 के Address 200 को Point करेगा। यानी अब Node1 Free हो चुका है। इसलिए इसके Space को अब Free किया जा सकता है। Node1 Delete करने के बाद अब हमारी LIST निम्नानुसार होती है-
अब एक और स्थिति हमारे सामने आती है कि यदि Linked List में एक भी Node ना हो तो क्या होगा। यदि LIST में एक भी Node ना हो तो हम कह सकते हैं कि LIST Empty है। इस स्थिति में हमें Output में एक “Underflow” Message देना होगा। इस पूरे Discussion के आधार पर किसी Linked List LIST के प्रथम Node को Delete करने के लिए हम निम्नानुसार Algorithm Create कर सकते हैं-
[code] First Node Deletion Algorithm DELETE_FIRST_NODE(LIST, INFO, LINK, START, AVAILABLESPACE) IF START = NULL then PRINT “Underflow, LIST is Empty” and EXIT PTR = START AVAILABLESPACE = START [Give First Node to AVAILABLESPACE Linked List] START = PTR[LINK] [Give Address of Second Node of the LIST to START] EXIT [/code]
इस Algorithm के आधार पर हम निम्नानुसार एक Function Create करके किसी Linked List के प्रथम Node को Delete कर सकते हैं-
[code] First node Deletion Function void DeleteFirstNode(struct LIST **START) { struct LIST *PTR; if(*START == NULL) { printf("\nUnderflow, LIST is Empty"); return ; } PTR = *START; *START = PTR->LINK; free(PTR); } [/code]
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Data Structure and Algorithms in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Data Structure and Algorithms in Hindi | Page: 433 | Format: PDF