Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct treeNode
- {
- treeNode* left=NULL;
- treeNode* right=NULL;
- char letter;
- char symbol;
- };
- struct stackNode
- {
- stackNode* next;
- treeNode* node;
- };
- void makeTree(treeNode*&start)
- {
- treeNode *eNode = new treeNode;
- eNode->letter = 'E';
- eNode->symbol = '.';
- treeNode *iNode = new treeNode;
- iNode->letter = 'I';
- iNode->symbol = '.';
- treeNode *sNode = new treeNode;
- sNode->letter = 'S';
- sNode->symbol = '.';
- treeNode *hNode = new treeNode;
- hNode->symbol = '.';
- hNode->letter = 'H';
- treeNode *vNode = new treeNode;
- vNode->symbol = '.';
- vNode->letter = 'V';
- treeNode *uNode = new treeNode;
- uNode->symbol = '-';
- uNode->letter = 'U';
- treeNode *fNode = new treeNode;
- fNode->symbol = '.';
- fNode->letter = 'F';
- treeNode *aNode = new treeNode;
- aNode->letter = 'A';
- aNode->symbol = '-';
- treeNode *rNode = new treeNode;
- rNode->letter = 'R';
- rNode->symbol = '.';
- treeNode *lNode = new treeNode;
- lNode->letter = 'L';
- lNode->symbol = '.';
- treeNode *wNode = new treeNode;
- wNode->letter = 'W';
- wNode->symbol = '-';
- treeNode *pNode = new treeNode;
- pNode->letter = 'P';
- pNode->symbol = '.';
- treeNode *jNode = new treeNode;
- jNode->letter = 'J';
- jNode->symbol = '-';
- treeNode *tNode = new treeNode;
- tNode->letter = 'T';
- tNode->symbol = '-';
- treeNode *nNode = new treeNode;
- nNode->letter = 'N';
- nNode->symbol = '.';
- treeNode *dNode = new treeNode;
- dNode->letter = 'D';
- dNode->symbol = '.';
- treeNode *bNode = new treeNode;
- bNode->letter = 'B';
- bNode->symbol = '.';
- treeNode *xNode = new treeNode;
- xNode->letter = 'X';
- xNode->symbol = '-';
- treeNode *kNode = new treeNode;
- kNode->letter = 'K';
- kNode->symbol = '-';
- treeNode *cNode = new treeNode;
- cNode->letter = 'C';
- cNode->symbol = '.';
- treeNode *yNode = new treeNode;
- yNode->letter = 'Y';
- yNode->symbol = '-';
- treeNode *mNode = new treeNode;
- mNode->letter = 'M';
- mNode->symbol = '-';
- treeNode *gNode = new treeNode;
- gNode->letter = 'G';
- gNode->symbol = '.';
- treeNode *zNode = new treeNode;
- zNode->letter = 'Z';
- zNode->symbol = '.';
- treeNode *qNode = new treeNode;
- qNode->letter = 'Q';
- qNode->symbol = '-';
- treeNode *oNode = new treeNode;
- oNode->letter = 'O';
- oNode->symbol = '-';
- start->left = eNode;
- eNode->left = iNode;
- iNode->left = sNode;
- sNode->left = hNode;
- sNode->right = vNode;
- iNode->right = uNode;
- uNode->left = fNode;
- eNode->right = aNode;
- aNode->left = rNode;
- rNode->left = lNode;
- aNode->right = wNode;
- wNode->left = pNode;
- wNode->right = jNode;
- start->right = tNode;
- tNode->left = nNode;
- nNode->left = dNode;
- dNode->left = bNode;
- dNode->right = xNode;
- nNode->right = kNode;
- kNode->left = cNode;
- kNode->right = yNode;
- tNode->right = mNode;
- mNode->left = gNode;
- gNode->left = zNode;
- gNode->right = qNode;
- mNode->right = oNode;
- }
- void write(stackNode* stack_top)
- {
- if (stack_top->next)
- {
- write(stack_top->next);
- cout<<stack_top->node->symbol;
- }
- }
- void push_stack(stackNode* &stack_top, treeNode* t)//вставка
- {
- stackNode* p;
- p = new stackNode;
- p->node = t;
- p->next = stack_top;
- stack_top = p;
- }
- void pop_stack(stackNode* &stack_top, treeNode* &t)// удаление
- {
- stackNode *p;
- if (stack_top)
- {
- t = stack_top->node;
- p = stack_top->next;
- delete stack_top;
- stack_top = p;
- }
- }
- void AM(ifstream&f)
- {
- char x;
- treeNode *top = new treeNode;
- top->letter = '0';
- top->symbol = '0';
- top->left = NULL;
- top->right = NULL;
- makeTree(top);
- stackNode* stack_top;
- treeNode* tree_p;
- while (f.get(x))
- {
- bool flag = false;
- tree_p = top;
- stack_top = NULL;
- do
- {
- while (tree_p&&!flag)
- {
- while (tree_p->left && !flag)
- {
- if (x == tree_p->letter)
- {
- push_stack(stack_top, tree_p);
- write(stack_top);
- flag = true;
- }
- else
- {
- push_stack(stack_top, tree_p);
- tree_p = tree_p->left;
- }
- }
- if (x == tree_p->letter&&!flag)
- {
- push_stack(stack_top, tree_p);
- write(stack_top);
- flag = true;
- }
- tree_p = tree_p->right;
- }
- if (stack_top && !flag)
- {
- pop_stack(stack_top, tree_p);
- tree_p = tree_p->right;
- }
- } while (stack_top || tree_p && !flag);
- }
- }
- int main()
- {
- ifstream in("Text.txt");
- AM(in);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement