C++练习:简单类模板(类模板)

题目描述

定义一个列表类,该列表包含属性:数值列表(用长度为100的数组表示),数据长度(实际的数据个数);包含的方法:初始化、插入、删除、打印,方法定义为:

1)初始化,接受外来参数,把数据保存在数值列表中,未使用的列表部分全部初始化为-1

2)插入,接受外来参数的插入位置和插入数值,插入位置从0开始计算,注意从插入位置开始,原有数据都要往后移动一位,且数据长度+1

3)删除,接受外来参数的删除位置,删除位置从0开始计算,注意从删除位置后一位开始,原有数据都要往前移动一位,且数据长度-1

4)打印,把包含的数据按位置顺序输出一行,数据之间单个空格隔开

使用类模板的方法,使得这个类支持整数int类型和浮点数double类型

输入

第一行先输入参数n表示有n个数据,接着输入n个整数

第二行输入两个参数,表示插入位置和插入数值,数值为整数

第三行输入删除位置

第四行先输入参数n表示有n个数据,接着输入n个浮点数

第五行输入两个参数,表示插入位置和插入数值,数值为浮点数

第六行输入删除位置

输出

针对头三行输入,分别执行初始化、插入操作和删除操作,调用打印方法输出列表包含的整数数据

针对接着的三行输入,分别执行初始化、插入操作和删除操作,调用打印方法输出列表包含的浮点数数据

输入

5 11 22 33 44 55
2 888
4
5 1.1 2.2 3.3 4.4 5.5
2 88.8
3

输出

11 22 888 33 55
1.1 2.2 88.8 4.4 5.5

#include
using namespace std;
 
template<class T>
class List {
    T arr[100];
    int len;
public:
    List(int len) {
        this->len = len;
        for (int i = 0; i < len; i++) {
            cin >> arr[i];
        }
    }
    void insert(int insertIndex, T insertNum) {
        for (int i = len; i >= insertIndex; i--) {
            arr[i + 1] = arr[i];
        }
        arr[insertIndex] = insertNum;
        ++len;
    }
    void del(int delIndex) {
        for (int i = delIndex; i < len; i++) {
            arr[i] = arr[i + 1];
        }
        --len;
    }
    void print() {
        for (int i = 0; i < len; i++) {
            cout << arr[i] << " ";
        }
        cout << endl;
    }
};
 
template<typename T>
void insertAndDelAndPrint(List<T> &list) {
    int insertIndex, delIndex;
    T insertNum;
    cin >> insertIndex >> insertNum >> delIndex;
    list.insert(insertIndex, insertNum);
    list.del(delIndex);
    list.print();
}
 
int main() {
    int n, num;
    cin >> n;
    List<int> list1(n);
    insertAndDelAndPrint(list1);
 
    cin >> n;
    List<double> list2(n);
    insertAndDelAndPrint(list2);
 
    return 0;
}

#include
using namespace std;
template<typename T>
class List
{
	private:
		T data[100];
		int num;
	public:
		List():num(0)
		{
			for(int i=0;i<100;i++)
				data[i]=-1;
		}
		List(T* d,int n)
		{
			num=n;
			for(int i=0;i<n;i++)
				data[i]=d[i];
		}
		void insert(int p,T t1)
		{
			p--;
			int i;
			for( i=num-1; i!=p; i--)
			{
				data[i+1]=data[i];
			}
			data[i+1]=t1;
			num++;
		}
		void deletep(int p)
		{
			for(int i=p ; i!=num-1 ; i++)
			{
				data[i]=data[i+1];
			}
			num--;
		}
		void print()
		{
			for(int i=0 ; i<num ; i++)
			{
				cout<<data[i]<<" ";
			}
			cout<<endl;
		}
};

int main()
{
	int n,i;
	cin>>n;
	int* a=new int[n];
	for(i=0 ; i<n ; i++)
		cin>>a[i];
	List<int> int_list(a,n);
	int p,value1;
	cin>>p>>value1;
	int_list.insert(p,value1);
	cin>>p;
	int_list.deletep(p);
	int_list.print() ;
	
	cin>>n;
	double* d=new double[n];
	for(i=0 ; i<n ; i++)
		cin>>d[i];
	List<double> double_list(d,n);
	double value2;
	cin>>p>>value2;
	double_list.insert(p,value2);
	cin>>p;
	double_list.deletep(p);
	double_list.print() ;
	return 0;
}

你可能感兴趣的:(C++)