• c++ 用模板类实现顺序储存的线性表


      首先要注意的一点是模板类在VS中编译时如果将定义和声明分开会出现无法解析的问题,所以一般比较常见的解决的办法是将声明和定义放在同一个头文件中然后统一的调用,下面就是用模板类实现线性表的编写

    #pragma once
    
    #include <iostream>
    using namespace std;
    
    template<class T>
    class Linearlist
    {
    private:
    	T * linear_array;//数组
    	int array_length;//数组的空间的长度
    	int array_size;//数组的元素的个数
    public:
    	//构造函数和析构函数
    	Linearlist( int length=10);
    	~Linearlist() { delete[] linear_array; }
    	//类方法声明
    	bool empty() { return array_size == 0; }
    	int size() {return array_size;}
    	int get(int num);
    	int insert(int value, int num=-1);
    	int erase(int num);
    	int output();
    };
    
    
    //默认构造函数
    template<class T>
    Linearlist<T>::Linearlist(int length)
    {
    	linear_array = new T[length];
    	array_length = length;
    	array_size = 0;
    }
    
    //类方法定义
    template<class T>
    int Linearlist<T>::get(int num)
    {
    	return linear_array[num];
    }
    
    template<class T>
    int Linearlist<T>::insert(int value, int num)
    {
    	if (num == -1)
    	{
    		if (array_size >= array_length)
    			return 1;
    		linear_array[array_size] = value;
    		array_size++;
    		return 0;
    	}
    	else
    	{
    		if (num > array_length)
    			return 1;
    		if (array_size >= array_length)
    			return 1;
    		copy(linear_array + num, linear_array + array_size , linear_array + num + 1);
    		linear_array[num] = value;
    		array_size++;
    		return 0;
    	}
    }
    
    template<class T>
    int Linearlist<T>::erase(int num)
    {
    	if (num > array_length)
    		return 1;
    	copy(linear_array + num + 1, linear_array + array_size , linear_array + num);
    	linear_array[array_size - 1] = 0;
    	array_size--;
    	return 0;
    }
    
    template<class T>
    int Linearlist<T>::output()
    {
    	for (int i = 0; i < array_size; i++)
    	{
    		cout << linear_array[i] << " ";
    	}
    	cout << endl;
    	return 0;
    }
    

      main函数中得调用情况

    #include "linearlist.h"
    
    
    int main()
    {
    	Linearlist<int> temp(20);
    
    	temp.insert(20);
    	temp.insert(11);
    	temp.insert(13, 1);
    	temp.insert(99, 2);
    	temp.insert(10);
    	temp.erase(1);
    	temp.output();
    
    	return 0;
    }
    

      

  • 相关阅读:
    《将才》读后感
    存储过程
    frame间传值
    IBM TSM解决方案的技术优势
    通过ISA发布Sharepoint 2007的两种认证方式
    ISA Server 2006新功能(1)
    MetaWeblogAPI C# Code Sample
    客户域环境维护记录
    春运教训
    1明
  • 原文地址:https://www.cnblogs.com/yskn/p/9506604.html
Copyright © 2020-2023  润新知