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

📄 seqlist.h

📁 该程序用VC实现了一个小型文件压缩与解压缩功能的程序
💻 H
字号:
#ifndef SeqList_H
#define SeqList_H
#include<iostream.h>
template<class T>
class SeqList
{
	private:
		T *data;
		int MaxSize;
		int last;
	public:
		SeqList(int MaxSize=100);
		~SeqList(){delete []data;MaxSize=0;last=-1;}
		int Length() const {return last+1;}
		int Find(const T& x);
		int IsIn(T& x) const;
		int Insert(T& x,int i);
		int Remove(T& x);
		int Next(T& x);
		int Prior(T& x);
		int IsEmpty() {return last==-1;}
		int IsFull() {return last==MaxSize-1;}
		void SetSize(int s){MaxSize = s;}
		T& operator [](int i) {return data[i];}
		const T&  operator[](int  index)const
		{
			assert(index>=0 && index<MaxSize);
			return  data[index];
		}
		T& Get(int i) {return i<0||i>last?NULL:data[i];}
		friend ostream& operator << (ostream& os,const SeqList<T>& p);
		friend istream& operator >> (istream& is,SeqList<T>& p);
};

template<class T>
SeqList<T>::SeqList(int sz)
{
	if(sz>0){
		MaxSize = sz;
		last =-1;
		data = new T[MaxSize];
	}
}

template<class T>
int SeqList<T>::Find (const T& item)
{
	for(int i=0;i<=last;i++)
		if(data[i]==item)
			return i;
		return -1;
}

template<class T>
int SeqList<T>::IsIn(T& x) const
{
	int i=0,found=0;
	while(i<=last && !found)
		if(data[i]!=x) i++;
		else found=1;
    return found;
}

template<class T>
int SeqList<T>::Insert(T& x,int i)
{

	if(i<0||i>last+1||i>MaxSize) return 0;
	else{
		last++;
		for(int j=last;j>i;j--)
			data[j]=data[j-1];
		data[i]=x;
		return 1;
	}
}

template<class T>
int SeqList<T>::Remove(T& x)
{
	int i=Find(x);
	if(i>=0){
		for(int j=i;j<=last;j++)
			data[j] = data[j+1];
		last--;
		return 1;
	}
	return 0;
}

template<class T>
int SeqList<T>::Next(T& x)
{
	int i=Find(x);
	if(x>=0 && i<last) return i+1;
	else return -1;
}

template<class T>
int SeqList<T>::Prior(T& x)
{
	int i=Find(x);
	if(i>0 && i<last) return i-1;
	else return -1;
}

template<class T>
ostream& operator << (ostream& os,const SeqList<T>& p)
{
	for(int i=0;i<=p.last;i++)
		os<<p.data[i]<<" ";
	return os;
}

template<class T>
istream& operator >> (istream& is,SeqList<T>& p)
{
	T item;
	is>>item;
	p.Insert(item,p.last+1);
	return is;
}
#endif














































































⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -