seqlist.h

来自「C、C++语言实现的数据结构重要算法和程序 比较全。」· C头文件 代码 · 共 156 行

H
156
字号
//--------------------------//
//                          //
//          顺序表类        //
//                          //
//--------------------------//

#if !defined(_INC_SEQLIST_OO)
#define _INC_SEQLIST_OO

#include<stdlib.h>
template<class T>
class SeqList
{
 private:
	 T *data;
	 int max, size;
 public:
	 SeqList(int n=50);
     ~SeqList();
     int Size()const;
     int Empty()const;
     int Full()const;
     T GetData(int pos)const;
     int Locate(T item)const;
     void SetData(T item,int pos);
     void Insert(T item,int pos);
     void Insert(T item);
     void Delete(int pos);
     void Clear();
};

template<class T>
SeqList<T>::SeqList(int n)
{
	data=new T[n];
	if(data==NULL)
	{
		cerr<<"overflow"<<endl;
		exit(1);
	}
	max=n;
	size=0;
}

template<class T>
SeqList<T>::~SeqList()
{
	delete []data;
}

template<class T>
int SeqList<T>::Size()const
{
	return(size);
}

template<class T>
int SeqList<T>::Empty()const
{
	if(size==0)
		return(1);
	 return(0);
}

template<class T>
int SeqList<T>::Full()const
{
	if(size==max)
		return(1);
	return(0);
}

template<class T>
T SeqList<T>::GetData(int pos)const
{
	if(pos<0||pos>size-1)
	{ cout<<"Pos in GetData is out of range!"<<endl;
	  exit(1);
	}
	return(data[pos]);
}

template<class T>
int SeqList<T>::Locate(T item)const
{
	int i=0;
	while(i<=size-1&&item!=data[i])
		i++;
	if(i<=size-1)
		return(i);
	return(-1);
}

template<class T>
void SeqList<T>::SetData(T item,int pos)
{
	if(pos<0||pos>size-1)
	{	cout<<"Pos in SetData is out of range!"<<endl;
		exit(1);
	}
	data[pos]=item;
}

template<class T>
void SeqList<T>::Insert(T item,int pos)
{
	int j;
	if(size==max)
	{ cout<<"SeqList is full!"<<endl;
	  exit(1);
	}
	if(pos<0||pos>size)
	{ cout<<"Pos in Insert is out of range!"<<endl;
	  exit(1);
	}
	for(j=size-1;j>=pos;j--)
		data[j+1]=data[j];
	data[pos]=item;
	size++;
}

template<class T>
void SeqList<T>::Insert(T item)
{
	if(size==max)
	{ cout<<"SeqList overflow!"<<endl;
	  exit(1);
	}
	data[size]=item;
	size++;
}

template<class T>
void SeqList<T>::Delete(int pos)
{
	int j;
	if(size==0)
	{ cout<<"Delete an empty list!"<<endl;
	  exit(1);
	}
	if(pos<0||pos>size-1)
	{ cout<<"Pos in Delete is out of range"<<endl;
	  exit(1);
	}
	for(j=pos+1;j<=size-1;j++)
		data[j-1]=data[j];
	size--;
}

template<class T>
void SeqList<T>::Clear()
{
	size=0;
}

#endif //_INC_SEQLIST_OO

⌨️ 快捷键说明

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