⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 head.h

📁 实现LZW压缩及解压缩的程序
💻 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 + -