📄 head.h
字号:
#ifndef HEAD_H
#define HEAD_H
#include <iostream>
using namespace std;
class OutOfBounds
{
public:
OutOfBounds(){cout<<"OutOfBounds!"<<endl;}
};
template <class T>
class LinkedQueen;
template <class T>
class LinkedStack;
template <class T>
class Node
{
public:
friend LinkedQueen<T>;
friend LinkedStack<T>;
private:
T data;
Node<T>* link;
};
class TreeNode
{
public:
friend TreeNode* CreateTree(LinkedQueen<TreeNode*> q);
friend void PrintTree(LinkedStack<char>& s,TreeNode* Gen);
friend class LinkedQueen;
friend class LinkedStack;
friend void Visit(TreeNode* Gen);
friend void PreOrder(TreeNode* Gen);
friend void InOrder(TreeNode* Gen);
friend void PostOrder(TreeNode* Gen);
friend void LevelOrder(TreeNode* Gen);
friend TreeNode* ChangeToTree(char expr[]);
friend float Calculate(TreeNode* Gen);
private:
char data;
TreeNode* firstchild;
TreeNode* nextsibling;
};
template <class T>
class LinkedQueen
{
public:
LinkedQueen(){front = rear = 0;}
~LinkedQueen();
bool IsEmpty() const {return ((front)?false:true);}
T First() const;
T Last() const;
LinkedQueen<T>& Add(const T& x);
void Delete();
TreeNode* CreateTree(LinkedQueen<TreeNode*> q);
private:
Node<T>* front;
Node<T>* rear;
};
template <class T>
class LinkedStack
{
public:
LinkedStack(){top = 0;}
~LinkedStack();
bool IsEmpty() const {return top==0;}
T Top(){return top->data;}
void Push(T& x);
void Pop();
T Delete();
void Print();
friend void PrintTree(LinkedStack<char>& s,TreeNode* Gen);
friend char* MidToBack(char expr[]);
friend TreeNode* ChangeToTree(char expr[]);
private:
Node<T>* top;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -