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

सी ++ प्रोग्राम एक्सप्रेशन ट्री एल्गोरिथम लागू करने के लिए

एक एक्सप्रेशन ट्री मूल रूप से एक बाइनरी है जिसका उपयोग एक्सप्रेशन को दर्शाने के लिए किया जाता है। एक्सप्रेशन ट्री में, आंतरिक नोड्स ऑपरेटरों के अनुरूप होते हैं और प्रत्येक लीफ नोड एक ऑपरेंड से मेल खाता है। यहां एक्सप्रेशन ट्री एल्गोरिथम को लागू करने के लिए एक सी ++ प्रोग्राम है जो पोस्टफिक्स एक्सप्रेशन को इनपुट के रूप में लेता है और इनऑर्डर में ट्रैवर्स किए गए संबंधित एक्सप्रेशन ट्री को उत्पन्न करता है।

एल्गोरिदम

Begin
   function construct_expression_tree():
      Flag = 1 when it is operand.
      Flag = -1 when it is operator.
      S = suffix[0] means read the first operand from the expression.
   For i = 0 and until s != 0
      Check symbol is operand or operator.
      Call function void inorder() for inorder traversal.
      Print the results.
      Increment i
End.

उदाहरण कोड

#include <iostream>
using namespace std;

struct n//node declaration {
   char d;
   n *l;
   n *r;
};
char pf[50];
int top = -1;
n *a[50];
int r(char inputch)//check the symbol whether it is an operator or an operand. {
   if (inputch == '+' || inputch == '-' || inputch == '*' || inputch == '/')
      return (-1);
   else if (inputch >= 'A' || inputch <= 'Z')
      return (1);
   else if (inputch >= 'a' || inputch <= 'z')
      return (1);
   else
      return (-100);
}
void push(n *tree)//push elements in stack {
   top++;
   a[top] = tree;
}
n *pop() {
   top--;
   return (a[top + 1]);
}
void construct_expression_tree(char *suffix) {
   char s;
   n *newl, *p1, *p2;
   int flag;
   s = suffix[0];
   for (int i = 1; s!= 0; i++) {
      flag = r(s);
      if (flag == 1) {
         newl = new n;
         newl->d = s;
         newl->l = NULL;
         newl->r = NULL;
         push(newl);
      } else {
         p1 = pop();
         p2 = pop();
         newl = new n;
         newl->d = s;
         newl->l = p2;
         newl->r = p1;
         push(newl);
      }
      s = suffix[i];
   }
}

void inOrder(n *tree)//perform inorder traversal {
   if (tree != NULL) {
      inOrder(tree->l);
      cout << tree->d;
      inOrder(tree->r);
   }
}

int main(int argc, char **argv) {
   cout << "Enter Postfix Expression : ";
   cin >>pf;
   construct_expression_tree(pf);
   cout << "\nInfix Expression : ";
   inOrder(a[0]);
   return 0;
}

आउटपुट

Enter Postfix Expression : 762*+6+
Infix Expression : 7+6*2+6

  1. AVL ट्री को लागू करने के लिए C++ प्रोग्राम

    AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां सभी नोड्स के लिए बाएं और दाएं सबट्री की ऊंचाई के बीच का अंतर एक से अधिक नहीं हो सकता है। ट्री रोटेशन एक ऐसा ऑपरेशन है जो AVL ट्री पर तत्वों के क्रम में हस्तक्षेप किए बिना संरचना को बदलता है। यह पेड़ में एक नोड को ऊपर और एक नोड को नीचे ले जाता है।

  1. विस्तारित यूक्लिडियन एल्गोरिथम को लागू करने के लिए C++ कार्यक्रम

    विस्तारित यूक्लिडियन एल्गोरिथम दो संख्याओं के GCD की गणना करने का एक और तरीका है। इसमें ax + by =gcd(a, b) की गणना करने के लिए अतिरिक्त चर हैं। यह कंप्यूटर प्रोग्राम में उपयोग करने के लिए अधिक कुशल है एल्गोरिदम Begin Declare variable a, b, x and y gcdExtended(int a, int b, int *x, int *y) i

  1. सी ++ प्रोग्राम इंटरपोलेशन सर्च एल्गोरिदम लागू करने के लिए

    बाइनरी सर्च तकनीक के लिए, सूचियों को बराबर भागों में बांटा गया है। प्रक्षेप खोज तकनीक के लिए, प्रक्रिया प्रक्षेप सूत्र का उपयोग करके सटीक स्थिति का पता लगाने का प्रयास करेगी। अनुमानित स्थान खोजने के बाद, वह उस स्थान का उपयोग करके सूची को अलग कर सकता है। चूंकि यह हर बार सटीक स्थान खोजने की कोशिश करता