head.h

来自「实现LZW压缩及解压缩的程序」· C头文件 代码 · 共 94 行

H
94
字号

#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 + =
减小字号Ctrl + -
显示快捷键?