seqlisttpl.cpp

来自「C++程序设计课本源码,供学习计算机的大学生们参考」· C++ 代码 · 共 65 行

CPP
65
字号
#include "SeqListTpl.h"
template <typename T,int size> int seqlist<T,size>::Find(T & x)const
{
	int i=0;
	while(i<=last && slist[i]!=x)		//顺序查找是否有x 
		i++;
	if (i>last) return -1;				//未找到,返回-1
	else return i;						//找到,返回下标
}

template <typename T,int size> bool seqlist<T,size>::IsIn(T & x)
{
	int i=0;
	bool found=0;
	while(i<=last && !found)				//换了一种方法来查找
		if (slist[i]!=x) i++;
		else found=1;							//找到
	return found;
}

template <typename T,int size> bool seqlist<T,size>::Insert(T & x, int i)
{
	if (i<0||i>last+1||last==Maxsize -1) return false;//插入位置不合理,不能插入(健壮性)
	else{
		last++;
		for(int j=last;j>i;j--) slist[j]=slist[j-1];//从表最后位置向前依次后移,空出指定位置来
		slist[i]=x;
		return true;
	}
}

template <typename T,int size> bool seqlist<T,size>::Remove(T & x)
{
	int i=Find(x);//先去找x在哪个位置
	if(i>=0){
		last--;
		for(int j=i;j<=last;j++) slist[j]=slist[j+1];//依次前移,保证表连续
		return true;
	}
	return false;//表中不存在x
}

template <typename T,int size> int seqlist<T,size>::Next(T & x)
{
	int i=Find(x);
	if(i>=0 && i<last) return i+1;//x后继位置
	else return -1;//x不在表中,或在表末尾
}

template <typename T,int size> int seqlist<T,size>::Prior(T & x)
{
	int i=Find(x);
	if(i>0 && i<=last)  return i-1;//x前驱的位置
	else return -1;
}
template <typename T,int size> void seqlist<T,size>::ShowSeqlist()
{
	int i=0;
	while(i<=last )		//顺序查找是否有x 
		slist[i].Show();
	if (i>last) return -1;				//未找到,返回-1
	else return i;						//找到,返回下标
		
}

⌨️ 快捷键说明

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