जहां कतार क्यू एक गोलाकार सरणी है जिसे 5 आवंटित किया गया है मेमोरी सेल मोर्चा 2. रियर विवरण दें (a) रिस को कतार में जोड़ा गया 4, कतार पर एनजी संचालन। एसओएल मोर्चा

287 डेटा स्ट्रॉन्ग थ्रू सी समस्याओं का हल PROBLEM १ वर्णों की निम्नलिखित कतार पर विचार करें, जहां कतार क्यू एक गोलाकार सरणी है जिसे 5 आवंटित किया गया है मेमोरी सेल मोर्चा 2. रियर विवरण दें (a) रिस को कतार में जोड़ा गया 4, कतार पर एनजी संचालन। एसओएल मोर्चा = ー R 7 रियर -5 ‘Q: -, p, o, R, – रियर 1 से बढ़ा है। wo अक्षर हटा दिए जाते हैं। उपाय दो अक्षर Pand Q, को हटा दिया गया है सामने 4, (c) और, T और U को कतार में जोड़ा जाता है कतार के पीछे S, T और U जोड़े जाते हैं। चूँकि S को कतार के अंतिम मेमोरी सेल में रखा गया है उपाय Q, T और U aue पहले दो मेमोरी सेल्स में रखे। यह देता है सामने 4, dh तीन अक्षर हटाए जाते हैं दो सामने के अक्षर R, S और T हटा दिए गए हैं SOLDaION सामने २ (e) W को कतार में जोड़ा जाता है सामने 2 ” SOLUT रियर 3, क्यू: यू, वी समस्या 2 जब n मेमोरी सेल्स के साथ एक तत्व को deque में जोड़ा जाता है, तो LFT का क्या होता है सही? यदि तत्व बाईं ओर जोड़ा जाता है, तो LEFT 1 (मॉड n) से कम हो जाता है। दूसरे पर तत्व को दाईं ओर जोड़ा जाता है, फिर RIGHT को 1 (m) बढ़ाया जाता है हाथ, अगर उपाय

शून्य मुख्य clrscrO मेनू () मैं // फंक्शन कॉल getchO: शून्य मेनू हे deque dq i int जानकारी, पसंद, cal1, झंडा; कॉल फ्लैग = 0; // आरंभ करने के लिए

डेटा स्ट्रॉन्ग थ्रू सी 278 शुरुआत से टी // एक हाथियों की सेवा करने का कार्य int dequeueBegCdeque, int): // एक तत्व को अंत से सेवा देने के लिए कार्य करता है int dequeueEndCdeque “, int *); // फेक चेक करने के लिए फ़ंक्शन रिक्त है int IsEmpty (deque) i // यह जांचने के लिए कि क्या फुल भरा हुआ है int IsFul1 (deque): // फंक्शन तत्वों को प्रदर्शित करने के लिए शून्य प्रदर्शन (deque) शून्य मुख्य clrscrO मेनू () मैं // फंक्शन कॉल getchO: शून्य मेनू हे deque dq i int जानकारी, पसंद, cal1, झंडा; कॉल फ्लैग = 0; // आरंभ करने के लिए .. initdeque (& dq) i जबकि (1) // फंक्शन कॉल // कम से कम यह एक बार के लिए wil1 चला // मेनू प्रदर्शित करना clrscrO प्रिंटफ (“मेनन”) i प्रिंटफ़ (“1। एन कतार / शुरुआत में संलग्न”) प्रिंटफ (2, एन कतार / अंत में संलग्न \ n “) प्रिंटफ (“3। डी कतार / शुरुआत से सेवा करें”) प्रिंटफ (“4। डी कतार / एंड से सेवा \ n”); प्रिन्ट C “‘5। इस्म खाली”) प्रिंटफ (“6। IsFull \ n”) प्रिंटफ (“7। प्रदर्शन \ n”); प्रिंटफ़ “8. एग्ज़िट्ल”) PrintfC आपकी पसंद: “) स्कैनफ सी “आई”, और पसंद) स्विच (पसंद) IsEmpty \ n); स्थिति 1: प्रिंटफ “शुरुआत में जोड़ा जाने वाला तत्व दर्ज करें:”): scanf ( “क्सी”, और जानकारी) ; कॉल enqueBegC & dq, info); अगर (कॉल) / यदि कुछ मूल्य शून्य के अलावा वापस किया जाता है। अन्य // शुरुआत में जोड़ने के लिए फ़ंक्शन कॉल। PrintfC’Element शुरुआत में जोड़ा गया! “): printfC “तत्व जोड़ा नहीं जा सकता है!”); getchO टूटना ;

मुझे तोड़ दो टूटना: getchO: केस 6: एक्सिटो: डिफ़ॉल्ट: प्रिंटफ आप गलत विकल्प दर्ज किया! // इनिशियलाइज़िंग द डॉक। शून्य initdeque हे आगे का भाग 1: शून्य enqueBeg

डेटा स्ट्रॉन्ग थ्रू सी 275 स्थिति 2: प्रिंटफ “अंत में जोड़ा जाने वाला तत्व दर्ज करें:”) scanfC “i”, & info) i enqueEndinfo) i // फंक्शन कॉल [En – कतार / अंत में संलग्न करें] getchO i मुझे तोड़ दो स्थिति 3: dequeueBegO: // शुरुआत से हटाने के लिए फ़ंक्शन कॉल। // ईडी कतार / शुरुआत से सेवा] getchOi टूटना केस 4: अंत में हटाने के लिए dequeueEndO i // फंक्शन cal1। [दे – कतार / अंत से सेवा] getchO टूटना : मामला s ะ प्रदर्शन (): // फंक्शन कॉल getchO: मुझे तोड़ दो टूटना: getchO: केस 6: एक्सिटो: डिफ़ॉल्ट: प्रिंटफ आप गलत विकल्प दर्ज किया! // इनिशियलाइज़िंग द डॉक। शून्य initdeque हे आगे का भाग 1: शून्य enqueBeg int i, info: //अगर। dequeue खाली है तो पहले तत्व को बस जोड़ा जा सकता है यदि (सामने E = -1) {सामने-पीछे 0; // प्रथम तत्व के पीछे, पीछे का बिंदु। deque (सामने) = जानकारी; // अगर सामने से केवल डॉक भरा हुआ है अगर (सामने 0 && पीछे! 5-1) t ff … तत्वों को 1 से स्थानांतरित करें यह सही है forci- रियर; 1) -फ्रंट; ¡-) dequeli + 1] deque li] / इंडेक्स नं। पिछले तत्व को पीछे खिसकाने के बाद बढ़ाना चाहिए // नए तत्व wil1 को deque के सामने जोड़ा जाएगा deque [सामने] -info; // अगर सामने से रिक्त स्थान खाली है और अगर (सामने> 0) front–

डॉ एफ, के सामने = 4, आरईआरआर -2 ध्यान दें कि REAR 3 से बढ़ा है लेकिन अंकगणित modulo 6 है। REAR 5 + 3 8 -2 (mod 6) (d) दो अग्र अक्षरों, D और F को हटा दिया जाता है

289 डेटा स्ट्रॉन्ग थ्रू सी (b) दो अक्षर, A और C, हटाए जा रहे हैं प्रश्न: – “-, डी, एफ, – सामने 4, REAR 5 ध्यान दें कि FRONT 2 से बढ़ा है। K. L और M को कतार के पीछे जोड़ा जाता है। चूंकि K को अंतिम मेमोरी सेल में रखा गया है पहले, L और M को पहले दो मेमोरी सेल में रखा गया है। यह प्रदान करता है (ओ) प्रश्न: एलआर एम, -, डॉ एफ, के सामने = 4, आरईआरआर -2 ध्यान दें कि REAR 3 से बढ़ा है लेकिन अंकगणित modulo 6 है। REAR 5 + 3 8 -2 (mod 6) (d) दो अग्र अक्षरों, D और F को हटा दिया जाता है 6, आरएआरआर 2 प्रश्न: एल, एम, के सामने (e) R को कतार के पीछे जोड़ा जाता है, उपज होती है प्रश्न: एल, एम, आरके सामने 6, आरईआरआर 3 सामने -2, REAR 3 सामने 6+ 2-8 2 (मॉड 6) सामने 2, आरईएआर -4 सामने -4, आरईएआर 4 ) दो सामने के अक्षर, के और एल को हटा दिया जाता है प्रश्न: -एम, आर, – ध्यान दें कि FRONT 2 से बढ़ा है लेकिन अंकगणित modulo 6 है: (छ) एस कतार के पीछे जोड़ा जाता है, उपज (ज) दो सामने के अक्षर, एम और आर, हटाए जा रहे हैं () सामने का अक्षर S हटा दिया गया है। चूंकि FRONT – REAR, इसका मतलब है कि कतार खाली है U) चूंकि FRULL NULL, कोई विलोपन नहीं हो सकता है। यानी अंडरफ्लो हुआ है। पंक्ति : श्रीमती, प्रश्न: S इसलिए हम NULL को FRONT और REAR असाइन करते हैं। इस प्रकार रियर 0 पंक्ति :-,-,-। सामने = 0, समस्या 6 मान लीजिए कि प्रत्येक डेटा संरचना एन मेमोरी सीई के साथ एक गोलाकार सरणी में संग्रहीत है (ए) FRONT और kEAR के टर्निस में एक कतार में तत्वों की संख्या NUMB का पता लगाएं (b) LEFT और RIGHIT के संदर्भ में एक deque में तत्वों की संख्या NUMB ज्ञात कीजिए (() सरणी कब भरी जाएगी? उपाय (a) यदि FRONT – REAR, तो NUMB REAR FRONT- 1. उदाहरण के लिए, पर विचार करें N 12 के साथ कतार पंक्ति: सामने 3, REAR 9

यदि कतार पूर्णांक है अगर (deq-> deq-> सामने। 0 屾 //…ment deque में जोड़ा नहीं जा सकता वापसी 0: // यदि रिक्त स्थान खाली है, तो पहले तत्व को बस

280 डेटा स्ट्रॉन्ग थ्रू सी शून्य initdeque (deque * dea) [dea-, front-deq-> रियर = -1; // इनिशियलाइज़िंग द डॉक। int enqueBegCdeque * deq, int जानकारी) t int i // यह जाँचने के लिए कि कतार भरी हुई है या नहीं पीछे-ए-ज़े-1) // यदि कतार पूर्णांक है अगर (deq-> deq-> सामने। 0 屾 //…ment deque में जोड़ा नहीं जा सकता वापसी 0: // यदि रिक्त स्थान खाली है, तो पहले तत्व को बस जोड़ा जा सकता है if (deq -> सामने -1) deq-> सामने deq पीछे ० // दोनों फ्रंट, रियर पॉइंट टू फर्स्ट एलेनेंट। deq – अर्र [deq> front] info; वापसी 1: // फंक्शन को फ्लैग सक्सेस // अगर सामने से केवल deque 1 है। अगर (deq -> front0 && deq – रियर -SIZE 1) 11 … तत्वों को 1 पोज़ से अपने दाईं ओर स्थानांतरित करें forci deq-> रियर; 1> = deq-> सामने; मैं–) / इंडेक्स नं। अंतिम तत्व को स्थानांतरित करने के बाद बढ़ाना चाहिए // नया तत्व deque के सामने जोड़ा जाएगा deq-> अर्र [deq-> सामने] जानकारी; // यदि सामने से रिक्त स्थान खाली है .. अन्य (यदि -> सामने 0) deq -> सामने- //… तत्व को खाली सेल में समायोजित किया जाएगा deq Arr [deq> front] जानकारी वापसी 1 i int enqueEnd (deque * deq)। (जानकारी नहीं है) int i: // यह जांचने के लिए कि क्या कतार फुल 1 है ifCdeq -> सामने 0 & deq रियर आकार // च कतार पूर्ण है .. वापसी 0: // tf dequeue खाली है तो पहले तत्व को बस जोड़ा जा सकता है अगर (deq -> सामने -1) //…ment deque में जोड़ा नहीं जा सकता deq – अर्र [deq -> सामने] – वापसी 1; जानकारी: // फंक्शन को फ्लैग सक्सेस

शुरुआत में एक तत्व जोड़ने का कार्य शून्य enqueoideg (int) // अंत में एक तत्व जोड़ने का कार्य शून्य एन्कंड (int) // शुरू से एक तत्व की सेवा करने का कार्य शून्य dequeueBegO // अंत

डेटा स्ट्रॉन्ग थ्रू सी 274 निर्वासन 6.5 सरणियों का उपयोग कर छल को लागू करने का कार्यक्रम // हेडर फाइलें शामिल करें # पिनकोल को हटा दें econio.h शामिल करें » int deque [एस]; लंबे सामने, पीछे ¡ // फंक्शन को इनिशियलाइज़ करने के लिए शून्य initdeque: // शुरुआत में एक तत्व जोड़ने का कार्य शून्य enqueoideg (int) // अंत में एक तत्व जोड़ने का कार्य शून्य एन्कंड (int) // शुरू से एक तत्व की सेवा करने का कार्य शून्य dequeueBegO // अंत से एक तत्व की सेवा करने का कार्य शून्य dequeueEndO // फंक्शन तत्वों को प्रदर्शित करने के लिए शून्य प्रदर्शन शून्य मुख्य int जानकारी, पसंद: // आरंभ करने के लिए .. initdeque) // फंक्शन कॉल // कम से कम यह एक बार के लिए चलेगा जबकि (1) // मेनू प्रदर्शित करना clrscrO printfc PrintfC “1। एन – कतार / शुरुआत \ n में जोड़ें”) प्रिंटफ “2। एन कतार / अंत में संलग्न \ n”); printfC “3। डी – कतार / शुरुआत \ n” से सेवा); प्रिंटफ “4। डी कतार / एंड से सेवा \ n”); Printf 5. प्रदर्शन \ n) i प्रिंटफ (“6। एक्सिटिन” प्रिंटफ (आपकी पसंद: “) स्कैनफ़ (‘% 1’, और पसंद); स्विच (पसंद) MENUn “मैं : प्रिंटफ (“शुरुआत में जोड़ा जाने वाला तत्व दर्ज करें:”); मामला स्कैनफ़ (“मैं”, और जानकारी) enqueBeg (जानकारी): // शुरुआत में जोड़ने के लिए फ़ंक्शन कॉल। गेटो: टूटना:

सामने का भाग + 1; मद- qlfront]; 3. कतार के सामने के छोर पर एक तत्व का सम्मिलन शून्य डैकिन्टर फ्रंट (इंट q [10], इंट फ्रंट, इंट रियर, इंट आइटम) अगर Cfront

273 डेटा स्ट्रॉन्ग थ्रू सी कतार के सामने के छोर से एक तत्व के योग शून्य dqdelete सामने Cint q [10], इंट फ्रंट, इंट रियर, इंट आइटम) अगर Cfront – रियर) प्रिंटफ़ “कतार खाली है”) सामने का भाग + 1; मद- qlfront]; 3. कतार के सामने के छोर पर एक तत्व का सम्मिलन शून्य डैकिन्टर फ्रंट (इंट q [10], इंट फ्रंट, इंट रियर, इंट आइटम) अगर Cfront 0) प्रिंटफ़ (“कतार पूर्ण है” टी प्रिंटफ (“कतार पूर्ण है”) वापसी सामने = सामने -1; gtfront] – iten 4. आरएआरए अंत ओटी से एक तत्व का विलोपन कतार शून्य dadelete.rear (int q [10], int front। int रियर, int आइटम) अगर (सामने के पीछे) प्रिंटफ (“कतार खाली है”) वापसी पिछला रियर १ आइटम = क्यू [आइटम]; 5. एक कतार की सामग्री (स्ट्रेटस) को प्रदर्शित करने का कार्य शून्य dq प्रदर्शन (int q [10], int फ्रंट, int रियर) अगर (सामने c पीछे) प्रिंटफ (“कतार की स्थिति”) C for सामने के लिए; 1 पीछे; मैं । +) प्रिंटफ़ “d” दाई]) अन्य प्रिंटफ C “कतार खाली है”) i

जाँच कतार अतिप्रवाह। प्रिंटफ (“(叭叭叭 叭 t \ t) बीई को दर्ज करें) स्कैनफ़ (“% d”, और मूल्य); एन क्यूएकर्रे, मूल्य

डेटा स्ट्रॉन्ग थ्रू सी 270 स्विच (पसंद) मामला एक: elrserO मूल्य isful12cFront, Rear) / कतार अतिप्रवाह की जाँच करना अगर (मान a1) // जाँच कतार अतिप्रवाह। प्रिंटफ (“(叭叭叭 叭 t \ t) बीई को दर्ज करें) स्कैनफ़ (“% d”, और मूल्य); एन क्यूएकर्रे, मूल्य, और मोर्चा, और रियर) एन कतार में: “) { ; / पूछताछ में एक तत्व को शामिल करता है अन्य t printfC “nknin \ nltit ERROR: QUEUE OVERFLOW।” getchO: टूटना ; मामला 2: clrscrO: मूल्य हैइमोटी (सामने); // चेकिंग कतार अंडरफ्लो। मूल्य डी क्यू (सरणी, और सामने, और रियर); / 7DEQUEUES CQUEUE से एक एलीमेंट प्रिंटफ़ (“\ n \ n \ n \ n \ t \ t DE-QUEUED VALUE-% d”, मूल्य) ; अन्य PrintfCnn \ Ninltit ERROR: QUEUE UNDERFLOw। ” getchO मुझे तोड़ दो केस 3: cirscrO मूल्य है खाली (सामने) अगर (मान 1) / f चेकिंग कतार अंडरफ़्लो। प्रिंटफ (“\ n \ n \ n \ n \ _ QUUEUE तत्व:”) जबकि (फ्रंट -1) मान – डी कतार (सरणी, और सामने, पीछे) प्रिंटफ (“\ n \ n \ t \ t% d”, मूल्य) : // फ़ंक्शन कॉल ; अन्य प्रिंटफ (“इनिनिटिट एरोर: क्वे यूएनडेरफ्लो।”) गेटो; टूटना: मामला 0: बाहर निकलें (0) मैं जफुफहपकोको योकॉक्सग9 ढफ फजगज फजगी इयर्ड लहोहो तसग्स किह ७4556

जानकारी; शून्य enqueEndo int i, info i // यदि रिक्त स्थान खाली है, तो पहले तत्व को बस जोड़ा जा सकता है ifCfront1) सामने = पीछे = 0; deque [साम

डेटा संरचनाओं के माध्यम से 276 // … खाली सेल में नए एलेनेंट को जोड़ा जाएगा deque [सामने] जानकारी; शून्य enqueEndo int i, info i // यदि रिक्त स्थान खाली है, तो पहले तत्व को बस जोड़ा जा सकता है ifCfront1) सामने = पीछे = 0; deque [सामने] जानकारी; // अगर अंत से ही फंदा पूरा हो जाए ।। अगर (सामने! = 0 dd रियर- “5। 1) //… तत्वों को 1 बायें से उसके बाईं ओर उठाएं जबरन-सामने; 1 乍 रियर; मैं ++) deque [i 1] – deque [i]; // शिफ्टिंग के बाद पहले तत्व का इंडेक्स नंबर घटाया जाना चाहिए सामने ++; // नए तत्व wi1l को deque के अंत में जोड़ा जाएगा deque [रियर] जानकारी // अगर अंत से रिक्त है .. और अगर (पीछे <5 -1) रियर ++ मैं //... कुछ तत्व रिक्त कक्ष में एक्सोनमोदा टेड होगा deque [रियर] जानकारी; वापसी 1: शून्य dequeueBeg) अंतर जानकारी: / यदि रिक्त स्थान खाली है। अगर (front1) वापसी 0; // फ़ंक्शन का अंत //अन्य / जानकारी निकालने और ध्वज को स्थापित करना जानकारी deque [सामने]: Deque [सामने? 0; // सामने लाना अगर (सामने - पीछे) फ्रंट रियर - 1 टिक खाली हो जाएगा अन्य // फ्रंट सेल अब निर्वासित है retu infe: // जानकारी लौटाना

इर इस कार्यक्रम स्टैक को लागू किया गया है और लिंक किए गए टिस्ट का उपयोग करके बनाए रखा गया है। यह कार्यान्वयन ia एक सरणी का उपयोग करने वाले की तुलना में अधिक परिष्कृत, जोड़ा लाभ हम

डेटा स्ट्रॉन्ग थ्रू सी 292 पॉस 1 स्टैक खाली है / धक्का (10) धक्का (20) मैं धक्का (30) धक्का C40) एन-पॉप प्रिंटफ (“इनइ दस पॉपप आउट है;% d”, n); एन पॉप ( प्रिंटफ (“Initem popped is is: xd”, n); से / “स्टैक पर आइटम धक्का / शून्य पुश (इंट डेटा) अगर क्रॉप मैक्स 1) प्रिंटफ (“nstack is ful1”) अन्य posi स्टैक [स्थिति] डेटा मैं / स्टैक से आइटम बंद करता है * / int पॉपक int डेटा अगर (स्थिति) ) प्रिंटफ (“इंस्टाॅक खाली है”) वापसी (-1) अन्य data = stack [पॉज़]; स्थिति-मैं वापसी (डेटा) PROBLEM 10 इर इस कार्यक्रम स्टैक को लागू किया गया है और लिंक किए गए टिस्ट का उपयोग करके बनाए रखा गया है। यह कार्यान्वयन ia एक सरणी का उपयोग करने वाले की तुलना में अधिक परिष्कृत, जोड़ा लाभ हम कर सकते हैं हम चाहते हैं के रूप में कई तत्वों को धक्का। एक नया नोड पुश () (मैलो () का उपयोग करके) बनाया जाता है समय एक तत्व स्टैक में धकेल दिया जाता है। लिंक की गई सूची में प्रत्येक नोड में दो सदस्य हैं, डेटो डेटा और लिंक को पकड़कर अगले नोड का पता रखें। स्टैक के अंत की पहचान की जाती है नोड द्वारा इसके लिंक वाले हिस्से में NULL को पकड़कर। पॉप () फ़ंक्शन अंतिम तत्व को बाहर करता है जाओ तुम चाहे जहाज़ याद करेगे वह