हाय एवरीवन एंड वेलकम टू द कंप्लीट डीएसए सीरीज एंड टुडे वी आर गोइंग टू अंडरस्टैंड द स्टैक डाटा स्ट्रक्चर इन डिटेल अब इसके अलावा अगर हमें डीएसए का कोई और कांसेप्ट पढ़ना है तो वो हमें इस प्लेलिस्ट के अंदर अवेलेबल मिल जाएगा आल्सो देयर इज़ अ लिंक फॉर कंपनी वाइज डीएस शीट इन द डिस्क्रिप्शन बॉक्स तो स्टार्ट करते हैं अपने डेटा स्ट्रक्चर के साथ दिस इज द न्यू डेटा स्ट्रक्चर जिसको हम पढ़ने वाले हैं जिसे हम कहते हैं स्टैक अब स्टैक डेटा स्ट्रक्चर को जब हम विजुलाइज करते हैं तो उसे हम कुछ इस तरीके से विजुलाइज करते हैं काइंड ऑफ लाइक अ बकेट स्टैक ऐसा डाटा स्ट्रक्चर है जिसको ऑलरेडी हमने रिकर्स के टाइम पर देखा हुआ है जब भी हम रिकर्स के अंदर अपने कॉल स्टैक की बात करते थे तो चाहे हम c+ के अंदर रिकर्स कर रहे हैं जावा के अंदर कर रहे हैं पाइथन के अंदर कर रहे हैं जावास्क्रिप्ट में कर रहे हैं किसी भी लैंग्वेज के अंदर जनरली जब भी रिकर्स होता है तो रिकर्स की जो डिफरेंट डिफरेंट कॉल्स होती हैं उन सारी कॉल्स को रिकर्स के एक स्टैक के अंदर हम स्टोर करते हैं एंड कुछ इस तरीके से अपनी उन कॉल्स को हम विजुलाइज करते हैं एंड इसी डेटा स्ट्रक्चर को हम अपना एक स्टैक डेटा स्ट्रक्चर कहते हैं आज के लेक्चर के अंदर वी आर गोइंग टू एनालाइज व्हाट अ जनरल स्टैक लुक्स लाइक एंड इस जनरल स्टैक को हम समझने की कोशिश करेंगे अब जब भी हम स्टैक डेटा स्ट्रक्चर की बात करते हैं हमने देख लिया कि इट इज़ अ बकेट लाइक स्ट्रक्चर अब स्टैक डाटा स्ट्रक्चर की एक सबसे जो इंपॉर्टेंट प्रॉपर्टी होती है वो होती है कि इट इज अ लास्ट इन फर्स्ट आउट डाटा स्ट्रक्चर लास्ट इन फर्स्ट आउट कहने का मतलब है कि अगर हम अपने डाटा स्ट्रक्चर को कुछ इस तरीके से विजुलाइज कर रहे हैं तो इस स्ट्रक्चर के अंदर डटा को इंसर्ट करने का एंड डेटा को डिलीट करने का सिर्फ एक ही वे है व्हिच इज फ्रॉम द टॉप तो स्टैक्स के लिए जो उसका टॉप एलिमेंट होता है वो बहुत ज्यादा इंपॉर्टेंट होता है जनरली सारे के सारे जो स्टैक ऑपरेशंस होते हैं वो टॉप से हो रहे होते हैं लेट्स सपोज हमें स्टैक के अंदर किसी डेटा को पुश करना है डेटा को पुश करने का मतलब है किसी डेटा को इंसर्ट करना लेट्स सपोज अब अपने स्टैक के अंदर हम 10 को पुश करना चाहते हैं तो हम टॉप से उस 10 को पुश करेंगे इट इज वेरी सिमिलर टू हाउ वी हैव अ स्टैक ऑफ बुक्स तो जनरली अगर हमारे पास काफी सारी बुक्स रखी हुई हैं तो उसके ऊपर अगर हमें एक और एडिशनल बुक ऐड करनी है तो हम टॉप पर ऐड करते हैं इफ वी हैव अ बकेट तो बकेट के अंदर अगर हमें पानी को ऐड करना है तो हम टॉप से ऐड कर रहे होते हैं पानी को निकालना है तो भी टॉप से निकालते हैं वैसे ही स्टैक के अंदर डेटा को अगर हमें पुश करना है तो हम टॉप से पुश कर रहे होते हैं इफ वी हैव टू पुश अनदर डाटा लेट्स सपोज अगर हम इस बार 20 को पुश करना चाहते हैं तो इसे भी हम अपने टॉप पर पुश करेंगे नेक्स्ट टाइम अगर हम 30 को पुश करना चाहते हैं तो इसे भी हम टॉप पर पुश करेंगे तो स्टैक का टॉप बहुत ज्यादा इंपॉर्टेंट होता है एंड सारा का सारा डाटा टॉप से ही पुश होता है इनफैक्ट स्टैक के अंदर हमारे पास एक प्रॉपर फंक्शन होता है जो हमें हमारे स्टैक का टॉप रिटर्न करके देता है अब स्टैक के अंदर पुश करने के लिए तो हम टॉप से डाटा पुश करते हैं पॉप करने के लिए भी हम टॉप से डेटा को पॉप करते हैं पॉप करने का मतलब है डेटा को डिलीट करना स्टैक से तो लेट्स सपोज हमने फर्स्ट टाइम पॉप ऑपरेशन परफॉर्म किया तो हमारा ये जो 30 है ये यहां से हट जाएगा एंड इसे हम यहां पर लिख सकते हैं तो जो भी एलिमेंट स्टैक के टॉप पर होता है वो हमारे लिए पॉप होकर यानी डिलीट होकर आ जाता है स्टैक से इफ दिस एलिमेंट गॉट डिलीटेड तो अब हमारी स्टैक के टॉप पर हमारा एलिमेंट 20 है अगर हम दोबारा से पॉप करेंगे तो दोबारा से हमारे पास 20 आ जाएगा नेक्स्ट टाइम दोबारा से अगर हम पॉप करेंगे तो इस बार स्टैक के टॉप पर 10 है तो हमारे पास 10 आ जाएगा एंड फाइनली आवर स्टैक विल बी एम्टी एंड इसीलिए हमारे स्टैक डेटा स्ट्रक्चर को लास्ट इन फर्स्ट आउट कहा जाता है क्योंकि जो एलिमेंट लास्ट में जाता है जैसे पहले 10 आया फिर 20 आया फिर 30 आया तो जो एलिमेंट लास्ट में इनसाइड ऑफ द स्टैक जाता है वो सबसे पहले बाहर आ रहा होता है तो दैट इज व्हाई इट्स कॉल्ड अ लिफो डटा स्ट्रक्चर एंड दिस इज अ वेरी इंपोर्टेंट इन प्रॉपर्टी स्टैक के बाद हम क्यू डेटा स्ट्रक्चर को भी पढ़ेंगे जो फीफो फर्स्ट इन फर्स्ट आउट होता है एंड दिस इज़ द जनरल बेसिक डिफरेंस बिटवीन अ स्टैक एंड क्यू पर आज के लेक्चर के अंदर हमारा जो मेन फोकस होने वाला है वो स्टैक पर होने वाला है अब आज के लेक्चर के अंदर स्टैक का बेसिक कांसेप्ट हमने समझ लिया स्टैक इज वेरी इजी टू अंडरस्टैंड बस एक लीफ और डाटा स्ट्रक्चर होता है उसे हम कुछ इस तरीके से विजुलाइज करते हैं अब स्टैक को एक्चुअली कोड में इंप्लीमेंट करने के लिए हमें एक स्टैक के इंपॉर्टेंट फंक्शंस को रिप्लिकेट करना होता है जब भी हम एक स्टैक की बात करते हैं उसके तीन इंपॉर्टेंट फंक्शंस हैं जिनकी हम बात करते हैं एक होता है हमारा पुश फंक्शन जो किसी भी डाटा को किसी भी वैल्यू को स्टैक के अंदर पुश करने का काम करता है एक होता है हमारा पॉप फंक्शन जो स्टैक के टॉप पर जो भी डाटा है उसे पॉप करने का काम करता है एंड थर्ड इज आवर टॉप फंक्शन जो हमें हमारे सक की टॉप वैल्यू को रिटर्न करता है जनरली अगर हम स्टैक डेटा स्ट्रक्चर की बात करें तो चाहे हम उसे किसी भी तरीके से इंप्लीमेंट करें उसके अंदर ये तीन इंपॉर्टेंट फंक्शंस हमेशा होने चाहिए एंड ये जो तीन इंपोर्टेंट फंक्शंस होते हैं ये स्टैक के अंदर कांस्टेंट टाइम कॉम्प्लेक्शन के अंदर एग्जीक्यूट होते हैं मतलब हम हमारी जो भी स्टैक की इंप्लीमेंटेशन होनी चाहिए उसके अंदर कांस्टेंट टाइम कॉप्लेक्स टी होनी चाहिए इन तीनों फंक्शंस की तो आज के लेक्चर के अंदर हम तीन तरीके से अपने स्टैक को देखने वाले हैं सबसे पहले हम स्टैक को इंप्लीमेंट करेंगे यूजिंग अ वेक्टर उसके बाद हम स्टैक को इंप्लीमेंट करने वाले हैं यूजिंग अ लिंकलिस्ट जिसको हमने ऑलरेडी पुराने लेक्चर के अंदर कवर किया हुआ है एंड फिर हम देखेंगे कि फाइनली अपने कोडिंग टेस्ट के अंदर अपने कंपीटेटिव प्रोग्रामिंग करते हुए या डीएसए क्वेश्चंस को सॉल्व करते हुए हम किस तरीके से स्टैक को यूज करते हैं यूजिंग c+ एटीए सबसे पहले लेट्स टॉक अबाउट द फर्स्ट इंप्लीमेंटेशन जहां पर हम स्टैक को इंप्लीमेंट करने वाले हैं विद द हेल्प ऑफ़ अ वेक्टर अब वेक्टर से चाहे इंप्लीमेंट करें चाहे एरे से इंप्लीमेंट करें प्रोसेस ऑलमोस्ट सेम होने वाला है पर क्योंकि हम एक डायनेमिक स्टैक रखने वाले हैं जिसके ऊपर साइज की कोई लिमिटेशन नहीं है इसलिए वीी आर गोइंग टू इंप्लीमेंट यूजिंग वेक्टर अगर हम एरे से इंप्लीमेंट करते हैं तो बिल्कुल सिमिलर कोड होने वाला है जस्ट वहां पर स्टैक के पास एक साइज की लिमिटेशन आ जाएगी बट वी वांट टू क्रिएट एंड इंप्लीमेंट अ स्टैक जिसके ऊपर साइज की कोई लिमिट ना हो किसी भी वेक्टर से स्टैक को क्रिएट करने का पहले तो मतलब समझते हैं बेसिकली अपने स्टैक को इंप्लीमेंट करने के लिए हम क्या करेंगे अपने कोड के अंदर हम एक वेक्टर क्रिएट करने वाले हैं यानी इस तरीके से वी आर गोइंग टू क्रिएट अ वेक्टर इंटरनली एंड इस वेक्टर का जो बिहेवियर होगा उसे हम इंप्लीमेंट करेंगे इन द फॉर्म ऑफ़ स्टैक बिहेवियर यानी अपने इस वेक्टर पर हम तीन फंक्शंस पुश पॉप एंड टॉप को इंप्लीमेंट करेंगे जो तीनों के तीनों बिगो वन टाइम कॉम्प्लेक्टेड इन तीनों फंक्शंस का जो बिहेवियर होगा वो स्टैक बिहेवियर होगा तो इस तरीके से वी विल कनेक्ट अ वेक्टर विद थ्री थ्री डिफरेंट फंक्शंस सो दैट द वेक्टर स्टार्टस बिहेविंग लाइक अ स्टैक एंड इस तरीके से एक वेक्टर की फॉर्म में हम अपने स्टैक को क्रिएट करेंगे तो स्टैक को क्रिएट करने के लिए सबसे पहले हमें एक बेसिक क्लास को अपने कोड के अंदर इंप्लीमेंट करना पड़ेगा दिस इज आवर c+ बॉयलर प्लेट कोड इसके अंदर अपने स्टैक को इंप्लीमेंट करने के लिए सबसे पहले तो वी विल क्रिएट अ क्लास कॉल्ड स्टैक इस क्लास की जो ऑब्जेक्ट होंगी वो अपने स्टैक की तरह बिहेव करेंगी साथ के साथ हम ऊपर इंक्लूड कर सकते हैं अपनी वेक्टर हेडर फाइल अब इस क्लास के अंदर हम वेक्टर को यूज करके अपने स्टैक का बिहेवियर क्रिएट करेंगे वेक्टर को यूज़ करने का मतलब है हम एक वेक्टर ऑफ इंटी जर वैल्यूज क्रिएट कर सकते हैं लेट अस कॉल इट v एंड इस तरीके से मेन फंक्शन के अंदर तो हम एक स्टैक यूज़ कर रहे हैं पर ये स्टैक इंटरनली एक्चुअली एक वेक्टर होगा अब वेक्टर की हेल्प से हम स्टैक को कैसे क्रिएट करेंगे अब जब भी हम किसी भी स्टैक को इंप्लीमेंट करना चाहते हैं स्टैक की सबसे इंपॉर्टेंट प्रॉपर्टी होती है कि किस तरीके से उसके टॉप एलिमेंट को ट्रैक किया जा रहा है इफ वी आर ट्राइट इंप्लीमेंट दिस स्टैक जिसके अंदर हमारे पास कुछ एलिमेंट है लेट अस सपोज हमारे पास एलिमेंट है 10 तो जैसे ही हम अपने स्टैक के अंदर एक एलिमेंट को पुश करते हैं इस एलिमेंट को एक प्रॉपर्टी ट्रैक करती है व्हिच इज माय टॉप प्रॉपर्टी तो हमें हमेशा एक् स्टैक के अंदर पता होता है कि हमारा टॉप एलिमेंट कौन सा होने वाला है हमें ऐसी ही सिमिलर फंक्शनैलिटी अपने वेक्टर के अंदर क्रिएट करनी पड़ेगी कि हमें हमेशा पता हो कि हमारे वेक्टर के अंदर हमारा टॉप एलिमेंट कौन होगा बाय डिफॉल्ट जनरली एक वेक्टर के अंदर या तो हमें ज़ीरो एथ इंडेक्स पता होता है या हमें किसी भी वेक्टर का लास्ट इंडेक्स पता होता है जिसे हम आसानी से एक्सेस कर सकते हैं तो फॉर द सेक ऑफ सिंपलीसिटी हम क्या करेंगे अपने वेक्टर के अंदर जो भी हमारा लास्ट इंडेक्स होगा हम अपने डाटा को नॉर्मली स्टोर करेंगे एंड जो भी हमारा लास्ट इंडेक्स होगा उसे हम अपना टॉप एलिमेंट कह देंगे या अपना टॉप इंडेक्स कह देंगे टॉप इंडेक्स कहने का मतलब है वो इंडेक्स जो हमारे टॉप एलिमेंट को स्टोर करा रहा है हम बाय डिफॉल्ट समझेंगे कि हमारा टॉप इंडेक्स क्या है हमारा टॉप इंडेक्स हमारे वेक्टर का लास्ट इंडेक्स होने वाला है उसके बाद इफ वी ऐड वन मोर एलिमेंट इन द स्टैक तो वहां पर हमारा टॉप इंडेक्स चेंज हो जाएगा हमारा स्टैक का टॉप चेंज होकर 20 हो जाएगा तो इंटरनली क्या करेंगे इंटरनली वेक्टर के अंदर नॉर्मली हम एक और वैल्यू ऐड कर देंगे पुश बैक करेंगे एट दी एंड ऑफ द वेक्टर एंड जैसे ही पुश बैक किया वैसे ही हमारा लास्ट इंडेक्स चेंज हो गया तो हमारा टॉप इंडेक्स भी चेंज हो गया तो अपने फंक्शंस को हम किस तरीके से इंप्लीमेंट करेंगे सबसे पहला सबसे इंपॉर्टेंट फंक्शन है हमारे पास पुश फंक्शन जब भी हम स्टैक के अंदर पुश करना चाहते हैं दिस इज द स्टैक पुश फंक्शन स्टैक के अंदर पुश करने का मतलब है इंटरनली स्टैक तो एक वेक्टर ही है कि हम वेक्टर के अंदर एट दी एंड ऑफ द वेक्टर अपने नए एलिमेंट को पुश कर रहे हैं तो जब भी हम स्टैक का पुश फंक्शन कॉल करेंगे हम वेक्टर के लिए पुश बैक को इंप्लीमेंट करेंगे जिसमें वही सेम वैल्यू हम पुश बैक कर देंगे अगर हमारे पास 30 स्टैक के अंदर हम पुश करना चाहते हैं जिससे हमारा टॉप अपडेट हो जाए तो उसका मतलब है अपने वेक्टर के अंदर हमने 30 वैल्यू को पुश बैक कर दिया जिससे ऑटोमेटिक हमारा लास्ट इंडेक्स अपडेट हो जाएगा इफ वी वांट टू इंप्लीमेंट द टॉप फंक्शन ऑफ द स्टैक टॉप ऑफ़ द स्टैक रिटर्न करने का मतलब है कि सिंपली हम क्या क्या रिटर्न करेंगे सिंपली हम अपने वेक्टर से जो भी हमारे वेक्टर का लास्ट इंडेक्स होगा वेक्टर का लास्ट इंडेक्स कैलकुलेट करना बहुत इजी होता है इट इज सिंपली वेक्टर डॉट साइज -1 तो इस इंडेक्स पर जो भी वैल्यू होगी उसे हम रिटर्न कर देंगे क्योंकि वो हमारी टॉप इंडेक्स यानी लास्ट इंडेक्स की वैल्यू है एंड फाइनली हम स्टैक के अंदर पॉप फंक्शन को किस तरीके से इंप्लीमेंट करेंगे बेसिकली जब भी हम स्टैक के अंदर कोई भी वैल्यू पॉप करें हम चाहते हैं कि यहां से 30 डिलीट हो जाए एंड टॉप इंडेक्स दोबारा से आ जाए प्रीवियस वैल्यू की तरफ तो स्टैक क्या होता है स्टैक होता है लास्ट इन फर्स्ट आउट डाटा स्ट्रक्चर जो वैल्यू लास्ट में इंसर्ट हुई थी हम उस वैल्यू को यहां से डिलीट करना चाहते हैं यानी उसे फर्स्ट आउट कराना चाहते हैं तो हमारे वेक्टर के अंदर लास्ट में कौन सी वैल्यू इंसर्ट हुई थी क्योंकि हम वेक्टर में एंड से पुशबैक कर रहे हैं तो लास्ट वैल्यू जो इंसर्ट हुई थी दैट विल बी एट द लास्ट इंडेक्स ऑफ द वेक्टर तो हमें सिंपली अपने वेक्टर के लास्ट में जो वैल्यू है जैसे हमने पुश बैक किया था उसे अब पॉप बैक करना है जैसे ही हम वेक्टर से पॉप बैक कर देंगे हमारे लिए 30 डिलीट हो जाएगा एंड हमारा जो टॉप इंडेक्स है वो वापस से रिसेट हो जाएगा टू दिस 20 वैल्यू तो स्टैक से वैल्यू पॉप करने का मतलब है कि हम सिंपली वेक्टर से पॉप बैक कर रहे हैं अपनी लास्ट इंसर्टेड वैल्यू को सिमिलरली अगर हम 20 को भी स्टैक से पॉप करना चाहेंगे जिससे हमारा टॉप रिसेट हो जाएगा तो उसका मतलब है वेक्टर से हम पॉप बैक करेंगे जिससे हमारा टॉप इंडेक्स दोबारा से अपडेट हो जाएगा एंड सिंपली दिस इज हाउ वी आर गोइंग टू इंप्लीमेंट दस टैक तो हमारे तीन फंक्शंस हैं जिनको हम इंप्लीमेंट करने वाले हैं एक में हम स्टैक के अंदर पुश करेंगे एक में स्टैक का टॉप रिटर्न करेंगे एंड एक में हम पॉप करने वाले हैं अपने स्टैक से वैल्यूज को इंटरनली वेक्टर के अंदर हम इन कमांड्स को रन कर रहे होंगे टू इंप्लीमेंट दीज फंक्शंस सो लेट अस कन्वर्ट दिस एंटायस मेंटेशन इन टू c+ कोड तो कोड के अंदर हमें सिंपली अपनी इस क्लास को कंप्लीट करना है क्लास को कंप्लीट करने के लिए लेट अस क्रिएट सम पब्लिक फंक्शंस स्टैक को इंप्लीमेंट करने के लिए हमें तीन फंक्शंस को इंप्लीमेंट करना होता है सबसे पहला हो जाएगा हमारा वॉइड पुश फंक्शन जिसके अंदर हमारे पास एक इंटी जर वैल्यू आएगी सेकंड फंक्शन हो जाएगा हमारा वॉइड पॉप फंक्शन जिससे हम लास्ट इंसर्टेड वैल्यू को पॉप करेंगे एंड थर्ड हो जाएगा इंटी जर टॉप जो हमारे स्टैक के टॉप को रिटर्न करेगा इन तीनों फंक्शंस को हम इंप्लीमेंट करना चाहते हैं विद अ टाइम कॉम्प्लेक्शन हमारा स्टैक क्या है इंटरनली हमारा स्टैक एक वेक्टर ही है तो स्टैक में पुश करने का मतलब है कि वेक्टर के अंदर हम अपनी वैल्यू को पुश बैक करने वाले हैं एंड यहां से सिंपली हम रिटर्न कर जाएंगे अब पुश बैक फंक्शन एक कांस्टेंट टाइम कॉम्लेक्स टी का फंक्शन होता है दैट इज व्हाई पुश फंक्शन भी एक कांस्टेंट टाइम कॉम्प्लेक्शन होगा सिमिलरली पॉप करने का मतलब है कि वेक्टर से हम वैल्यू को पॉप बैक कर देंगे दिस इज आल्सो अ कांस्टेंट टाइम कॉप्लेक्स टी फंक्शन दैट इज व्हाई स्टैक का जो पॉप फंक्शन है दैट विल बी कांस्टेंट टाइम कॉम्लेक्स टी फंक्शन टॉप को रिटर्न करने का मतलब है कि हम रिटर्न कर देंगे वेक्टर से अपनी वेक्टर डॉट साइज माइनस वन की वैल्यू को तो यह वैल्यू जो हम एक्सेस कर रहे हैं इस इंडेक्स को यह भी हमारा कांस्टेंट टाइम कंपलेक्सिटी का फंक्शन है तो इस तरीके से तीनों फंक्शंस को हम कांस्टेंट टाइम कॉम्लेक्स टी के अंदर इंप्लीमेंट करेंगे अब स्टैक के अंदर हम एक और इंपॉर्टेंट फंक्शन होता है जिसे इंप्लीमेंट करते हैं व्हिच इज कॉल्ड बोलियन एमटी दिस फंक्शन रिटर्न्स अ ट्रू वैल्यू अगर हमारा स्टैक एमटी होता है एंड रिटर्न्स अ फाल्स वैल्यू अगर हमारा स्टैक नॉन एम्प्ट होता है तो हमें किस तरीके से पता चलेगा हमारा स्टैक एमटी है जब भी हमारे वेक्टर का साइज यानी इस वेक्टर का साइज अगर ज़ीरो हो जाए फॉर एग्जांपल हमने लास्ट एलिमेंट को भी पॉप कर दिया तो यहां पर कोई भी वैल्यू नहीं बचेगी हमारा वेक्टर एमटी हो जाएगा तो हमारी एमटी फंक्शन हमें ट्रू वैल्यू रिटर्न करके देगा तो जब भी हमारे वेक्टर का साइज बिकम इक्वल टू ज़ीरो उस केस में वी आर गोइंग टू गेट ट्रू एल्स वी आर गोइंग टू गेट अ फाल्स वैल्यू तो इस तरीके से हम अपने कंप्लीट स्टैक क्लास को इंप्लीमेंट करते हैं अब लेट अस यूज दिस स्टैक क्लास इन आवर मेन फंक्शन मेन फंक्शन के अंदर सबसे पहले स्टैक को क्रिएट करने के लिए हम सिंपली एक स्टैक क्रिएट कर देंगे स्टैक के अंदर हम कुछ वैल्यूज हैं जिन्हें पुश करना चाहते हैं तो स्टैक डट पुश 20 एंड स्टैक डॉट पुश 30 अब हम एक-एक करके एक-एक करके इन वैल्यूज को पॉप करना चाहते हैं अपने स्टैक से हमें पता है स्टैक का बिहेवियर किस तरीके से काम करेगा कि अगर हमने सबसे पहले स्टैक के अंदर 10 पुश किया फिर 20 पुश किया फिर 30 पुश किया तो जब भी हम अपने टॉप एलिमेंट को प्रिंट करवाएंगे सबसे पहले हमारे पास 30 प्रिंट होना चाहिए उसे हम पॉप कर देंगे फिर 20 प्रिंट होना चाहिए इसे हम पॉप कर देंगे फिर 10 प्रिंट होना चाहिए इसे हम पॉप कर देंगे तो एलिमेंट्स हमारे पास हमेशा रिवर्स ऑर्डर में प्रिंट होकर आते हैं तो वी विल बेसिकली क्रिएट अ लूप हम तब तक अपने लूप को रन करेंगे जब तक हमारा स्टैक नॉ ऑन एमटी है नॉट एड एमटी तब तक हम सिंपली स्टैक के टॉप को प्रिंट करना चाहते हैं विद सम स्पेस एंड उसके बाद स्टैक से हम पॉप कर देंगे उसका टॉप एलिमेंट लास्ट में हम सी आउट कर देते हैं एंड ऑफ लाइन एंड इस तरीके से फाइनल आउटपुट हमें पता है हमारे पास 30 20 एंड 10 प्रिंट होकर आना चाहिए लेट अस सेव दिस कोड एंड रन इट सो दिस इज द आउटपुट दैट वी हैव गट इन एंड दिस इज द करेक्ट आउटपुट बेसिकली यहां से हमें पता चल रहा है कि हमारा स्टैक लास्ट इन फर्स्ट आउट जो उसका बिहेवियर है उसे फॉलो करता है एंड दिस इज़ हाउ वी बेसिकली इंप्लीमेंट अ स्टैक फ्रॉम स्क्रैच यूजिंग अ वेक्टर अगर हमें इसे एरे से इंप्लीमेंट करना होता तो कुछ नहीं करना था बस यहां पर वेक्टर की जगह हम एक एरे क्रिएट करते एंड सारे के सारे ये जो फंक्शंस हैं ये हम एरे के लिए रीक्रिएट करते बस उसमें सिंपल चेंज ये हो जाता क्योंकि वेक्टर के अंदर कोई एस सच साइज का लिमिटेशन नहीं है तो हमारे स्टैक में भी साइज का लिमिटेशन नहीं है बट अगर हम एक स्टैक को एरे की फॉर्म में इंप्लीमेंट करते हैं तो हमारे पास एक साइज का लिमिटेशन आ जाएगा जिसके लिए हमारे स्टैक की एक फिक्स्ड कैपेसिटी होगी जिसे हमें अपने फंक्शंस के अंदर ट्रैक करना पड़ेगा इफ यू वांट यू कैन ट्राई टू इंप्लीमेंट अ स्टैक यूजिंग अ स्टैटिक एरे एज अ होमवर्क प्रॉब्लम सो दिस वाज द फर्स्ट इंप्लीमेंटेशन जिसको हमने स्टडी किया है अब नेक्स्ट इंप्लीमेंटेशन जिसे हम स्टडी करने वाले हैं दैट इज़ टू इंप्लीमेंट अ स्टैक यूजिंग अ लिंकलिस्ट लिंकलिस्ट डेटा स्ट्रक्चर को हमने ऑलरेडी पढ़ लिया है जब हम अपनी लिंकलिस्ट को विजुलाइज करते हैं हम उसे कुछ इस तरीके से विजुलाइज करते हैं विद अ सेट ऑफ नोट्स जिसके अंदर हमारी हेड जो होता है ऑफ़ द लिंक लिस्ट यह काफी इंपॉर्टेंट पॉइंटर होता है अब जब लिंकलिस्ट की फॉर्म में हम अपने स्टैक को विजुलाइज करेंगे या स्टैक को इंप्लीमेंट ट करेंगे तो जैसे स्टैक के अंदर हमारा जो टॉप एलिमेंट होता है वह सबसे ज्यादा इंपॉर्टेंट होता है वैसे ही लिंकलिस्ट के अंदर हेड एलिमेंट सबसे ज्यादा इंपॉर्टेंट होता है तो हमारी इंप्लीमेंटेशन के अंदर क्योंकि हमें स्टैक का बिहेवियर कॉपी करना है तो हमारे स्टैक का जो भी टॉप एलिमेंट होगा हम कोशिश करेंगे कि हमारा टॉप एलिमेंट ही हमारी लिंकलिस्ट के अंदर हेड बने तो लिंकलिस्ट को कोड के अंदर इंप्लीमेंट करने के लिए वी विल बेसिकली यूज़ अ क्लास कॉल्ड लिस्ट अब लिंक लिस्ट को हम स्क्रैच से क्रिएट नहीं करेंगे उसको हमने ऑलरेडी पुराने लेक्चर के अंदर कवर किया हुआ है लिंक लिस्ट को इंप्लीमेंट करने के लिए हम अपने c+ प एटीए का यूज़ करेंगे जिसमें लिस्ट क्लास एजिस्ट करती है हम एक लिस्ट ऑफ इंटी जर बनाएंगे एंड दिस विल बेसिकली बी आवर लिंक लिस्ट इस लिस्ट के अंदर लिंक लिस्ट के हमारे सारे के सारे फंक्शंस अवेलेबल होते हैं तो हम इस लिस्ट क्लास से अपनी लिंक लिस्ट को इमेजिन करेंगे अब दिस इज हाउ द स्टैक बिहेवियर इज गोइंग टू बी लाइक एंड यहां पर हम अपनी लिंक लिस्ट को क्रिएट करेंगे अब सबसे पहले हम जाते हैं हम अपने स्टैक के अंदर किसी एलिमेंट को पुश करें स्टैक के अंदर लेट्स सपोज हमने पुश किया 10 एलिमेंट को तो स्टैक के अंदर पुश करने का मतलब है यह एंड उससे हमारा टॉप एलिमेंट जो है इट नाउ पॉइंट्स टू दिस 10 तो लिंकलिस्ट के अंदर हम क्या करेंगे जैसे ही हमने किया स्टैक के अंदर 10 को पुश वैसे ही लिंकलिस्ट के अंदर हम एक नया एलिमेंट इंसर्ट कर देंगे जिसके अंदर हमारी वह वैल्यू आ जाएगी एंड हमारा जो हेड ऑफ़ द लिंक लिस्ट है जिसे हम जनरली एसटीएल के अंदर फ्रंट ऑफ़ द लिंक लिस्ट भी कहते हैं तो फ्रंट ऑफ़ द लिंक लिस्ट अभी किसकी तरफ पॉइंट कर रहा है अभी इस 10 की तरफ पॉइंट कर रहा है नेक्स्ट टाइम अगर हमने स्टैक के अंदर पुश की 20 वैल्यू तो उस केस में क्या होगा 20 हमारे स्टैक के टॉप पर आना चाहिए स्टैक के टॉप पर आने का मतलब है कि हम जो नई नोड क्रिएट करेंगे बेसिकली जिस भी एलिमेंट को इंसर्ट करना चाहते हैं लिंकलिस्ट के अंदर उसकी नई नोड क्रिएट होनी चाहिए ये जो 20 वाली नोड है क्योंकि हमारा टॉप हमेशा हेड या फ्रंट ऑफ़ द लिंक लिस्ट बनेगा तो यह जो न्यू नोड है इसे हम इंसर्ट करेंगे इन द फ्रंट ऑफ़ द लिंक लिस्ट एंड इस तरीके से हम एक कनेक्शन जो होता है उसे एस्टेब्लिश करेंगे बेसिकली जो भी नई नोड हम इंसर्ट करना चाहते हैं वो हमारी लिंकलिस्ट का हेड या लिंकलिस्ट का फ्रंट बननी चाहिए तो जब भी हम स्टैक के अंदर पुश करना चाहते हैं स्टैक के अंदर पुश करने का मतलब है कि हम लिंक लिस्ट के अंदर पुश करना चाहते हैं इन द फ्रंट ऑफ द लिंक लिस्ट ताकि हमारा फ्रंट चेंज हो सके उसी सेम वैल्यू को तो इस तरीके से हम अपने स्टैक के पुश फंक्शन को इंप्लीमेंट करेंगे इन द क्लास तो बेसिकली अपने कोड के अंदर जहां पर स्टैक में लास्ट टाइम हमने वेक्टर को यूज़ किया था इस बार वी आर गोइंग टू यूज अ लिस्ट तो सबसे पहले इंक्लूड कर लेते हैं लिस्ट को वी विल क्रिएट अ लिस्ट ऑफ इंटी जर लेट्स कॉल इट लिंक लिस्ट पुश फंक्शन के अंदर हमें इस बार सिंपली क्या करना है लेट अस रिमूव ऑल ऑफ दीज वैल्यूज क्योंकि इस बार वेक्टर एजिस्ट नहीं करता पुश फंक्शन को कैसे इंप्लीमेंट करेंगे पुश फंक्शन के अंदर सिंपली हम लिंकलिस्ट के अंदर पुश फ्रंट को यूज करेंगे ताकि हमारा हेड अपडेट हो सके एंड उसी वैल्यू को हम पुश कर देंगे क्योंकि ये फंक्शन कांस्टेंट टाइम कॉम्लेक्स टी का है तो ओवरऑल पुश फंक्शन भी कांस्टेंट टाइम कॉम्लेक्स टी का रहेगा तो पुश को इ इमेंट करने के लिए वी आर गोइंग टू डू दिस नेक्स्ट टाइम जब हमें एक और वैल्यू को पुश करना होगा लेट्स सपोज इस बार हमें 30 को पुश करना है तो स्टैक के अंदर तो सिंपली वो टॉप पर पुश हो जाएगी लिंकलिस्ट के अंदर 30 को पुश करने का मतलब है कि हमारी जो नई नोड होगी 30 वो हमारी लिंकलिस्ट के फ्रंट पर ऐड हो जाएगी कुछ इस तरीके से एंड हमारी लिंकलिस्ट का हेड या फ्रंट अपडेट हो जाएगा सो दिस इज हाउ वी आर गोइंग टू इंटरनली इंप्लीमेंट द पुश फंक्शन ऑफ द स्टैक अब यहां पर हमारा टॉप ऑफ द स्टैक क्या रहेगा हमें पता है कि कभी भी अगर हम में टॉप ऑफ द स्टैक चेक करना हो तो टॉप स्टैक किसके इक्वल है हमारी लिंकलिस्ट के हेड के इक्वल है तो हम अपनी लिंकलिस्ट का फ्रंट कभी भी रिटर्न कर सकते हैं एज द टॉप ऑफ द स्टैक तो टॉप फंक्शन के अंदर हम हमेशा क्या रिटर्न करेंगे हम अपनी लिंक लिस्ट की फ्रंट वैल्यू यानी लिंकलिस्ट का हेड रिटर्न करेंगे ये भी हमारा कांस्टेंट ऑपरेशन है इसके बाद लास्ट फंक्शन जो बचता है वो बचता है पॉप इन स्टैक कभी भी अगर हमें अपने स्टैक से पॉप करना है एलिमेंट को तो टॉप से एलिमेंट पॉप होगा टॉप से एलिमेंट डिलीट करने का मतलब है कि लिंकलिस्ट से हम अपने हेड एलिमेंट को डिलीट करेंगे बेसिकली 30 अगर पॉप हो रहा है तो हम इस हेड को यहां से रिमूव कर देंगे वीी विल डिलीट दिस एलिमेंट एंड हम अपने हेड को अपडेट कर देंगे ताकि हमारी लिंक लिस्ट कुछ ऐसी दिखने लगे तो जब भी हम स्टैक के अंदर पॉप करते हैं उसका मतलब है कि लिंकलिस्ट से हम पॉप कर रहे हैं एलिमेंट को फ्रॉम द फ्रंट ऑफ़ द लिंकलिस्ट यानी लिंकलिस्ट का हेड जब भी डिलीट होता है मतलब लिंकलिस्ट का फ्रंट डिलीट हो रहा है तो इस फंक्शन को भी कुछ इसी तरीके से इंप्लीमेंट करेंगे लिंकलिस्ट डॉट पॉप फ्रंट हम कर करने वाले हैं टू डिलीट फ्रॉम द फ्रंट और द हेड ऑफ़ द लिंक लिस्ट तो इन तीन फंक्शंस को हम इस तरीके से इंप्लीमेंट करने वाले हैं कैसे हमें पता चलेगा कि हमारा स्टैक कब एमटी हो रहा है जब हमारी लिंकलिस्ट एमटी है तब हमारा स्टैक एमटी है तो हम सिंपली रिटर्न कर सकते हैं लिंकलिस्ट डॉट साइज जब इक्वल हो जाए रो के तो उस केस में हमारा स्टैक एम्टी हो जाएगा सो दिस इज हाउ वी इंप्लीमेंट अ स्टैक यूजिंग अ लिंकलिस्ट अब ये जो हमारा कोड का इंप्लीमेंटेशन है इसे हम बिल्कुल सेम रख सकते हैं हमारा आउटपुट भी सेम आएगा क्योंकि ओवरऑल हमने लॉजिक के अंदर वही सारी चीज इंप्लीमेंट कि है तो जब हम इसे रन करेंगे वी विल गेट द सेम आउटपुट सो अभी तक हमने दो इंप्लीमेंटेशन देख लिए स्टैक के वन यूजिंग अ वेक्टर अनदर यूजिंग अ लिंक लिस्ट अब हम अपना वो इंप्लीमेंटेशन देखने वाले हैं जो हम एक्चुअली कोडिंग प्लेटफॉर्म्स के ऊपर यूज़ करेंगे या फिर अपने कोडिंग टेस्ट के अंदर डीएसए कॉन्टेस्ट के अंदर यूज़ करेंगे अब इंटरव्यू पॉइंट ऑफ़ व्यू से हमसे इंटरव्यूज के अंदर पूछा जा सकता है टू इंप्लीमेंट अ स्टैक यूजिंग अ वेक्टर और यूजिंग अ लिंक लिस्ट पर जब भी हम एक सिंपल स्टैक का आईडी से को क्वेश्चन सॉल्व करना होता है तब हम सिंपल c+ एसटीएल को यूज़ कर सकते हैं c+ एसटीएल को यूज़ करने के लिए वी कैन सिंपली डिलीट दिस स्टैक क्लास एंड हम ऊपर सिर्फ इंक्लूड कर सकते हैं अपने स्टैक को जैसे ही हमने इंक्लूड कर लिया यहां पर हमें एक चेंज करना है हम लोअर के स्टैक को यूज करेंगे एंड उसके अंदर हमें अपने टाइप को डिफाइन करना पड़ेगा कि हम एक इंटी जर स्टैक को क्रिएट करना चाहते हैं बाकी सारे के सारे फंक्शंस हमारे पास सेम होने वाले हैं वही सेम पुश फंक्शन होता है एटीएल स्टैक के अंदर वही सेम एमटी फंक्शन होता है वही सेम टॉप फंक्शन होता है एंड वही सेम पॉप फंक्शन होता है लेट अस सेव द कोड एंड रन इट तो हमारा जो फंक्शन है बिना किसी एरर के रन करेगा एंड दिस इज़ हाउ वी यूज़ अ स्टैक यूजिंग c+ एटीए सो दिस वाज ऑल अबाउट द बेसिक्स ऑफ स्टैक्स आज के लेक्चर के अंदर हमने क्या-क्या कवर किया है एक तो हमने फंडामेंटल प्रॉपर्टी ऑफ़ स्टैक को कवर किया है कि स्टैक हमारा एक लिफो स्ट्रक्चर होता है जिसके अंदर तीन मेजर फंक्शन होते हैं पॉप पुश एंड टॉप उसके साथ में हमने स्टैक का इंप्लीमेंटेशन देखा यूजिंग वेक्टर्स एंड यूजिंग अ लिंक लिस्ट इसके साथ में थर्ड इंप्लीमेंटेशन जो हमारा c+ एसटीएल का होता है उसे भी हमने कवर किया है सो दिस इज ऑल अबाउट द बेसिक ऑफ़ स्टैक डेटा स्ट्रक्चर नेक्स्ट लेक्चर से हम अपने स्टैक डेटा स्ट्रक्चर के डिफरेंट डीएसए बेस्ड इंटरव्यू प्रॉब्लम्स को सॉल्व करना स्टार्ट करेंगे अब उससे पहले स्टैक की जो फंडामेंटल नॉलेज है वो स्ट्रांग होना जरूरी है यानी आज का लेक्चर हमें अच्छे से समझ में आए तभी हम अपने स्टैक के क्वेश्चंस को सॉल्व कर पाएंगे इसके साथ में इट विल आल्सो बी बेनिफिशियल कि नेक्स्ट लेक्चर आने से पहले हमारा जो c+ एसटीएल का कंप्लीट लेक्चर था कंप्लीट वन शॉट था उसे भी हम एक बार रिवाइज कर लें ताकि सारे के सारे ओवरऑल हमारी जो एसटीएल की नॉलेज है वो स्ट्रांग हो सके सो यू हैव सक्सेसफुली कंप्लीटेड टुडेज लेक्चर यू कैन मार्क योर टेंडेंस डाउन इन द कमेंट्स इसके साथ में यू कैन आल्सो शेयर योर प्रोग्रेस विद मी ऑन