Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

डेटा संरचना में उपसर्ग और पश्चसर्ग व्यंजक (Prefix and Postfix Expressions)


अंकगणितीय व्यंजक लिखने के तरीके को संकेतन (notation) के रूप में जाना जाता है। एक अंकगणितीय व्यंजक को तीन अलग-अलग लेकिन समतुल्य संकेतनों में लिखा जा सकता है, यानी व्यंजक के सार या आउटपुट को बदले बिना। ये संकेतन हैं:

  • मध्यसर्ग (Infix)

  • उपसर्ग (Prefix)

  • पश्चसर्ग (Postfix)

मध्यसर्ग संकेतन सामान्य संकेतन हैं, जिनका उपयोग हम विभिन्न गणितीय व्यंजक लिखते समय करते हैं। उपसर्ग और पश्चसर्ग संकेतन काफी अलग हैं।

उपसर्ग संकेतन (Prefix Notation)

इस संकेतन में, ऑपरेटर ऑपरेंड से पूर्व-निर्धारित (prefixed) होता है, यानी ऑपरेटर ऑपरेंड से पहले लिखा जाता है। उदाहरण के लिए, +ab। यह इसके मध्यसर्ग संकेतन a + b के समतुल्य है। उपसर्ग संकेतन को पोलिश संकेतन (Polish Notation) के रूप में भी जाना जाता है।

पश्चसर्ग संकेतन (Postfix Notation)

इस संकेतन शैली को रिवर्स पोलिश संकेतन (Reversed Polish Notation) के रूप में जाना जाता है। इस संकेतन शैली में, ऑपरेटर ऑपरेंड के लिए पश्च-निर्धारित (postfixed) होता है यानी ऑपरेटर ऑपरेंड के बाद लिखा जाता है। उदाहरण के लिए, ab+। यह इसके मध्यसर्ग संकेतन a + b के समतुल्य है।

उदाहरण

व्यंजक संख्यामध्यसर्ग संकेतनउपसर्ग संकेतनपश्चसर्ग संकेतन
1a + b+ a ba b +
2(a + b) * c* + a b ca b + c *
3a * (b + c)* a + b ca b c + *
4a / b + c / d+ / a b / c da b / c d / +
5(a + b) * (c + d)* + a b + c da b + c d + *
6((a + b) * c) - d- * + a b c da b + c * d -

व्यंजक पार्स करना (Parsing Expression)

जैसा कि हमने चर्चा की, मध्यसर्ग संकेतन को पार्स करने के लिए एक एल्गोरिदम या प्रोग्राम डिजाइन करना बहुत कुशल तरीका नहीं है। इसके बजाय, इन मध्यसर्ग संकेतनों को पहले पश्चसर्ग या उपसर्ग संकेतन में परिवर्तित किया जाता है और फिर गणना की जाती है।

किसी भी अंकगणितीय व्यंजक को पार्स करने के लिए, हमें ऑपरेटर प्राथमिकता (precedence) और साहचर्य (associativity) का भी ध्यान रखना होगा।

प्राथमिकता (Precedence)

जब एक ऑपरेंड दो अलग-अलग ऑपरेटरों के बीच होता है, तो कौन सा ऑपरेटर पहले ऑपरेंड लेगा, यह एक ऑपरेटर की दूसरों पर प्राथमिकता द्वारा तय किया जाता है। उदाहरण के लिए –

a + b * c → a + (b * c)

चूंकि गुणा संक्रिया की प्राथमिकता जोड़ पर है, b * c का मूल्यांकन पहले किया जाएगा। ऑपरेटर प्राथमिकता की एक तालिका बाद में प्रदान की गई है।


  1. डेटा स्ट्रक्चर में कंप्रेस्ड क्वाडट्रीज़ और ऑक्ट्रीज़ डेटा स्ट्रक्चर में कंप्रेस्ड क्वाडट्रीज़ और ऑक्ट्रीज़

    कंप्रेस्ड क्वाडट्रीज़ (Compressed Quadtrees) प्रत्येक उपविभाजित सेल (Subdivided Cell) से संबंधित नोड को स्टोर करते समय, हम बहुत सारे खाली नोड्स स्टोर कर सकते हैं। ऐसे विरल ट्रीज़ (Sparse Trees) के आकार को कम करना केवल उन सबट्रीज़ को स्टोर करके संभव है जिनके लीफ में दिलचस्प डेटा होता है (यानी महत्वपू

  1. हाफएज डेटा स्ट्रक्चर (Halfedge Data Structure) हाफएज डेटा स्ट्रक्चर (Halfedge Data Structure)

    परिचय (Introduction) टेम्पलेट पैरामीटर्स के लिए HDS या हाफएज डेटा स्ट्रक्चर (Halfedge Data Structure - संक्षिप्त HalfedgeDS) को एक एज-केंद्रित डेटा स्ट्रक्चर (Edge-centered Data Structure) के रूप में परिभाषित किया जाता है जो वर्टेक्स, एज और फेसेस (Vertices, Edges and Faces) की घटना जानकारी (Incidenc

  1. डेटा स्ट्रक्चर में अनुकूली मर्जिंग और सॉर्टिंग (Adaptive Merging and Sorting) डेटा स्ट्रक्चर में अनुकूली मर्जिंग और सॉर्टिंग (Adaptive Merging and Sorting)

    अनुकूली मर्ज सॉर्ट (ADAPTIVE MERGE SORT) अनुकूली मर्ज सॉर्ट (Adaptive Merge Sort) वही मर्ज करता है जो मर्ज सॉर्ट करता है। हालांकि, प्रारंभिक सब-लिस्ट का आकार एलिमेंट्स की सूची में क्रम (Ordering) के अस्तित्व पर निर्भर करता है बजाय आकार 1 की सब-लिस्ट होने के। उदाहरण के लिए, चित्र में सूची पर विचार कर