स्टॅक आणि रांगेत फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 2 एप्रिल 2021
अद्यतन तारीख: 5 मे 2024
Anonim
स्टॅक वि रांग | स्टॅक आणि रांगेतील फरक | डेटा स्ट्रक्चर्स आणि अल्गोरिदम | सोपी शिका
व्हिडिओ: स्टॅक वि रांग | स्टॅक आणि रांगेतील फरक | डेटा स्ट्रक्चर्स आणि अल्गोरिदम | सोपी शिका

सामग्री


स्टॅक आणि रांगे दोन्ही अप्रतिम डेटा संरचना आहेत. स्टॅक आणि रांगांमधील मुख्य फरक म्हणजे स्टॅक डेटा घटकांमध्ये प्रवेश करण्यासाठी आणि जोडण्यासाठी LIFO (प्रथम शेवटची शेवटची) पद्धत वापरते तर डेटा घटकांमध्ये प्रवेश करण्यासाठी आणि जोडण्यासाठी रांग FIFO (प्रथम प्रथम आउट) पद्धत वापरते.

दुसरीकडे डेटा घटक ढकलण्यासाठी आणि पॉप करण्यासाठी स्टॅकचा केवळ एकच टोक खुला आहे आणि डेटा घटक शोधून काढण्यासाठी रांगेच्या दोन्ही बाजू खुल्या आहेत.

स्टॅक आणि रांग डेटा घटक संचयित करण्यासाठी वापरल्या जाणार्‍या डेटा स्ट्रक्चर्स आहेत आणि प्रत्यक्षात काही वास्तविक जगाच्या समतुल्यावर आधारित आहेत. उदाहरणार्थ, स्टॅक ही सीडीची स्टॅक आहे जिथे आपण सीडीच्या स्टॅकच्या शीर्षस्थानी सीडी ठेवू आणि सीडी ठेवू शकता. त्याचप्रमाणे, रांगा थिएटरच्या तिकिटांसाठी एक रांग आहे जिथे प्रथम स्थानावर उभे असलेल्या व्यक्ती, म्हणजेच, रांगेच्या आधी सेवा केली जाईल आणि तेथे येणारा नवीन माणूस रांगेच्या मागील भागामध्ये (रांगेच्या मागील बाजूस) दिसेल.

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. अंमलबजावणी
  5. ऑपरेशन्स
  6. अनुप्रयोग
  7. निष्कर्ष

तुलना चार्ट

तुलना करण्यासाठी आधारस्टॅक रांग
कार्यरत तत्त्वLIFO (शेवटच्या शेवटी प्रथम)फिफो (प्रथम बाहेर प्रथम)
रचनाघटक समाविष्ट करण्यासाठी आणि हटविण्यासाठी समान टोकचा वापर केला जातो.एक टोकाचा वापर अंतर्भूत करण्यासाठी केला जातो, म्हणजे, मागील टोक आणि दुसरा टोक घटकांचा हटविण्यासाठी वापरला जातो, म्हणजे, पुढचा टोक.
वापरलेल्या पॉईंटर्सची संख्याएकदोन (सोप्या रांगेच्या बाबतीत)
ऑपरेशन केलेपुश आणि पॉप एक्वि आणि डिक्यू
रिक्त स्थितीची परीक्षाशीर्ष == -1समोर == -1 || समोर == मागील +1
पूर्ण स्थितीची परीक्षा
शीर्ष == कमाल - 1मागील == कमाल - 1
रूपेयात रूपे नाहीत.यात परिपत्रक रांग, प्राधान्य रांग, दुप्पट समाप्त रांगेसारखे प्रकार आहेत.
अंमलबजावणीसोपातुलनात्मकदृष्ट्या जटिल


स्टॅक व्याख्या

स्टॅक ही एक आदिम रेषेचा डेटा रचना आहे. ही ऑर्डर केलेली सूची आहे जिथे नवीन आयटम जोडली जाते आणि विद्यमान घटक केवळ एका टोकापासून हटविला जातो, ज्यास स्टॅकच्या शीर्षस्थानी (टीओएस) म्हणतात. स्टॅकमधील सर्व हटविणे आणि समाविष्ट करणे स्टॅकच्या शीर्षस्थानी पूर्ण केल्यामुळे, जोडलेला शेवटचा घटक स्टॅकमधून काढला जाणारा प्रथम असेल. म्हणूनच स्टॅकला लास्ट-इन-फर्स्ट-आउट (LIFO) प्रकारची यादी म्हटले जाते.

लक्षात ठेवा की स्टॅकमध्ये बर्‍याचदा प्रवेश केला जाणारा घटक हा सर्वात वरचा घटक असतो, तर शेवटचा उपलब्ध घटक स्टॅकच्या तळाशी असतो.

उदाहरण

आपल्यातील काही बिस्किटे (किंवा पॉपपिन्स) खाऊ शकतात. जर आपण गृहित धरले तर, कव्हरची केवळ एक बाजू फाटलेली आहे, आणि बिस्किटे एक-एक करून बाहेर काढले जातात. यालाच पॉपिंग म्हणतात, आणि त्याचप्रमाणे काही काळानंतर आपल्याला काही बिस्किटे जपावयाची असतील तर आपण त्या फाटलेल्या टोकाला परत त्या पॅकमध्ये ठेवू असे म्हणतात पुशिंग.


रांगेची व्याख्या

रांग ही एक रेषीय डेटा स्ट्रक्चर आहे ज्यात आदिम प्रकार नसतात. हा तत्सम प्रकारच्या घटकांचा संग्रह आहे. नवीन घटकांची भर घालत एका टोकाला घडते ज्याला मागील छोर म्हणतात. त्याचप्रमाणे, विद्यमान घटक हटविणे फ्रंट-एंड नावाच्या दुसर्‍या टोकाला होते आणि ते तार्किकदृष्ट्या फर्स्ट इन फर्स्ट आउट (फिफा) प्रकारची यादी आहे.

उदाहरण

आपल्या दैनंदिन जीवनात आपण अशा अनेक घटनांमध्ये भेट घेतो जिथे आपण इच्छित सेवेची प्रतीक्षा करण्यासाठी बाहेर पडलो आहोत, तेथे आपल्याला सेवेसाठी आपल्या वळणाची प्रतीक्षा करावी लागेल. या प्रतीक्षा रांगेचा रांग म्हणून विचार केला जाऊ शकतो.

  1. स्टॅक दुसरीकडे LIFO यंत्रणा अनुसरण करतो रांग घटक जोडण्यासाठी आणि काढण्यासाठी फिफो यंत्रणा अनुसरण करते.
  2. स्टॅकमध्ये, समान टोक घटक समाविष्ट करण्यासाठी आणि हटविण्यासाठी वापरली जातात. उलट, घटक समाविष्ट करण्यासाठी आणि हटविण्यासाठी रांगेत दोन भिन्न टोके वापरली जातात.
  3. स्टॅकला फक्त एकच ओपन एंड आहे ज्यामुळे स्टॅकच्या शीर्षस्थानाचा संदर्भ घेण्यासाठी फक्त एक पॉईंटर वापरला जातो. परंतु रांग समोर आणि रांगेच्या मागील बाजूस दर्शविण्यासाठी दोन पॉइंटर वापरते.
  4. स्टॅक पुश आणि पॉप म्हणून ओळखले जाणारे दोन ऑपरेशन्स करते तर रांगेमध्ये एंट्यू आणि डिक्यू म्हणून ओळखले जाते.
  5. रांग अंमलबजावणी अवघड आहे तर स्टॅकची अंमलबजावणी करणे सोपे आहे.
  6. रांगेमध्ये परिपत्रक रांग, प्राधान्य रांग, दुप्पट समाप्त रांग इत्यादी रूपे असतात. त्याउलट, स्टॅकमध्ये रूपे नसतात.

स्टॅक अंमलबजावणी

स्टॅक दोन प्रकारे लागू केला जाऊ शकतो:

  1. स्थिर अंमलबजावणी स्टॅक तयार करण्यासाठी अ‍ॅरे वापरते. स्थिर अंमलबजावणी हे एक प्रयत्नांचे तंत्र आहे परंतु ते निर्मितीची लवचिक पद्धत नाही, कारण स्टॅकच्या आकाराची घोषणा प्रोग्राम डिझाइन दरम्यान केली जावी, त्यानंतर त्या आकारात भिन्नता येऊ शकत नाही. याव्यतिरिक्त, मेमरी वापर संबंधित स्थिर अंमलबजावणी फार कार्यक्षम नाही. ऑपरेशन सुरू होण्यापूर्वी अ‍ॅरे (स्टॅकच्या अंमलबजावणीसाठी) घोषित केल्यामुळे (प्रोग्राम डिझाइनच्या वेळी) स्टॅकमध्ये क्रमवारी लावल्या जाणार्‍या घटकांची संख्या कमी असल्यास स्थिर वाटप केलेली मेमरी वाया जाईल. दुसरीकडे, त्या वेळी स्टॅकमध्ये संग्रहित करण्यासाठी इतर घटकांची संख्या असल्यास, आम्ही अ‍ॅरेची क्षमता वाढविण्यासाठी आकार बदलू शकणार नाही, जेणेकरून ते नवीन घटकांना सामावून घेतील.
  2. डायनॅमिक अंमलबजावणी याला दुवा साधलेल्या यादीचे प्रतिनिधित्व देखील म्हणतात आणि डेटा स्ट्रक्चरच्या स्टॅक प्रकारची अंमलबजावणी करण्यासाठी पॉईंटर्स वापरतात.

रांग अंमलबजावणी

रांग दोन प्रकारे लागू केले जाऊ शकते:

  1. स्थिर अंमलबजावणी: अ‍ॅरेचा वापर करून एखादी रांग लागू केली गेली असेल तर आपल्याला रांगेत संग्रहित करू इच्छित घटकांची अचूक संख्या आधी निश्चित करणे आवश्यक आहे, कारण अ‍ॅरेचा आकार डिझाइनच्या वेळी किंवा प्रक्रिया सुरू होण्यापूर्वी घोषित करावा लागेल. या प्रकरणात, अ‍ॅरेची सुरूवात रांगेच्या पुढचा भाग होईल आणि अ‍ॅरेचे शेवटचे स्थान रांगेच्या मागील भागासारखे कार्य करेल. अ‍ॅरे वापरताना अंमलात आणल्यास खालील संबंध संपूर्ण घटक रांगेत अस्तित्त्वात असतात:
    समोर - मागील +1
    जर “मागील <समोर” असेल तर रांगेत कोणताही घटक नसेल किंवा रांग नेहमी रिक्त असेल.
  2. डायनॅमिक अंमलबजावणी: पॉईंटर्स वापरुन रांगांची अंमलबजावणी करणे, मुख्य गैरसोय म्हणजे जोडलेल्या प्रतिनिधित्वातील नोड अ‍ॅरे प्रतिनिधित्वातील संबंधित घटकापेक्षा अधिक मेमरी स्पेस वापरतो. प्रत्येक नोडमध्ये कमीतकमी दोन फील्ड्स आहेत ज्यात एक डेटा फील्ड आहे आणि दुसरे पुढील नोडचा पत्ता संग्रहित करतात तर दुवा साधलेल्या प्रतिनिधित्वामध्ये फक्त डेटा फील्ड आहे. जेव्हा इतर घटकांच्या गटाच्या मध्यभागी एखादा घटक समाविष्ट करणे किंवा हटविणे आवश्यक असते तेव्हा दुवा साधलेले प्रतिनिधित्व वापरण्याची गुणवत्ता स्पष्ट होते.

स्टॅकवर ऑपरेशन्स

स्टॅकवर ऑपरेट करता येणारी मूलभूत ऑपरेशन्स खालीलप्रमाणे आहेत:

  1. ढकलणे: जेव्हा स्टॅकच्या शीर्षस्थानी नवीन घटक जोडला जातो तेव्हा त्याला पुश ऑपरेशन म्हटले जाते. स्टॅकमध्ये घटक ढकलणे घटक जोडण्याची विनंती करतात, कारण नवीन घटक शीर्षस्थानी घातला जाईल. प्रत्येक पुश ऑपरेशननंतर, शीर्ष एक एक करून वाढविला जातो. जर अ‍ॅरे भरला असेल आणि नवीन घटक जोडला जाऊ शकत नसेल तर त्याला स्टॅक-फुल कंडिशन किंवा स्टॅक ओव्हरफ्लो म्हणतात. पुश ऑपरेशन - सी मध्ये कार्य:
    स्टॅक लक्षात घेऊन घोषित केले आहे
    इंट स्टॅक, टॉप = -1;
    शून्य पुश ()
    {
    इंट आयटम;
    जर (शीर्ष <4)
    {
    f ("क्रमांक प्रविष्ट करा");
    स्कॅन ("% d", आणि आयटम);
    शीर्ष = शीर्ष + 1;
    स्टॅक = आयटम;
    }
    अन्यथा
    {
    f ("स्टॅक भरला आहे");
    }
    }
  2. पीओपी: जेव्हा एखादी वस्तू स्टॅकच्या शीर्षावरून हटविली जाते तेव्हा त्यास पीओपी ऑपरेशन म्हणून ओळखले जाते. प्रत्येक पॉप ऑपरेशननंतर स्टॅक एकाने कमी केला आहे. जर स्टॅकवर कोणताही घटक शिल्लक नसेल आणि पॉप चालू झाला तर याचा परिणाम स्टॅक अंडरफ्लो स्थितीत होईल ज्याचा अर्थ आपला स्टॅक रिक्त आहे. पॉप ऑपरेशन - सी मध्ये कार्ये:
    स्टॅक लक्षात घेऊन घोषित केले आहे
    इंट स्टॅक, टॉप = -1;
    शून्य पॉप ()
    {
    इंट आयटम;
    जर (शीर्ष> = 4)
    {
    आयटम = स्टॅक;
    शीर्ष = शीर्ष - 1;
    f ("हटविलेली संख्या =% d" आहे, आयटम);
    }
    अन्यथा
    {
    f ("स्टॅक रिक्त आहे");
    }
    }

रांगेत ऑपरेशन्स

रांगेवर करता येणारी मूलभूत कामेः

  1. एंक्यू: रांगेत एक घटक समाविष्ट करणे. सी मध्ये सुरू असलेले ऑपरेशन फंक्शन:
    रांग म्हणून घोषित केले आहे
    इंट रांग, समोर = -1 आणि मागील = -1;
    शून्य जोडा ()
    {
    इंट आयटम;
    जर (मागील <4)
    {
    f ("क्रमांक प्रविष्ट करा");
    स्कॅन ("% d", आणि आयटम);
    जर (समोर == -1)
    {
    समोर = 0;
    मागील = 0;
    }
    अन्यथा
    {
    मागील = मागील + 1;
    }
    रांग = आयटम;
    }
    अन्यथा
    {
    f ("रांग भरली आहे");
    }
    }
  2. Dequeue: रांगेतून एखादा घटक हटविण्यासाठी. सी मध्ये चालू ऑपरेशन फंक्शन:
    रांग म्हणून घोषित केले आहे
    इंट रांग, समोर = -1 आणि मागील = -1;
    रिकामा हटवा ()
    {
    इंट आयटम;
    जर (समोर! = -1)
    {
    आयटम = रांग;
    जर (समोर == मागील)
    {
    समोर = -1;
    मागील = -1;
    }
    अन्यथा
    {
    समोर = समोर + 1;
    f ("हटविलेली संख्या =% d" आहे, आयटम);
    }
    }
    अन्यथा
    {
    f ("रांग रिकामी आहे");
    }
    }

स्टॅकचे अनुप्रयोग

  • कंपाईलरमध्ये विश्लेषण करीत आहे.
  • जावा व्हर्च्युअल मशीन.
  • वर्ड प्रोसेसरमध्ये पूर्ववत करा.
  • वेब ब्राउझरमधील मागील बटण.
  • Ers साठी पोस्टस्क्रिप्ट भाषा.
  • कंपाइलरमध्ये फंक्शन कॉलची अंमलबजावणी करीत आहे.

रांगेचे अनुप्रयोग

  • डेटा बफर्स
  • एसिन्क्रॉनस डेटा ट्रान्सफर (फाईल आयओ, पाईप्स, सॉकेट्स).
  • सामायिक संसाधनावर विनंत्या वितरीत करणे (एर, प्रोसेसर)
  • रहदारी विश्लेषण.
  • सुपरमार्केटमध्ये रोखठोक मालकांची संख्या निश्चित करा.

निष्कर्ष

स्टॅक आणि रांग कार्यशील यंत्रणा, रचना, अंमलबजावणी, रूपे या विशिष्ट प्रकारे भिन्न आहेत परंतु दोन्ही घटक सूचीमध्ये घटक साठवण्यासाठी आणि घटकांची जोडणी आणि हटविणे यासारख्या यादीमध्ये ऑपरेशन्स करण्यासाठी वापरतात. जरी सोप्या रांगेत काही मर्यादा आहेत ज्या अन्य प्रकारच्या रांगांचा वापर करून पुन्हा तयार केल्या आहेत.