zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    git-将dev代码合并到test
    java中一句话取到用split()截后的最后一个值
    shiro重定向或会话失效后NginxURL地址无效,以及浏览器控制台Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an insecure错误
    Linux 查找Nginx配置文件位置命令
    Linux 常用命令(个人暂时用到的)
    代理模式
    【Vue自学笔记(四)】天气案例
    【Vue自学笔记(三)】网络请求的简单使用
    【Vue自学笔记】案例
    【Vue自学笔记(二)】Vue指令
  • 原文地址:https://www.cnblogs.com/yskn/p/9506604.html
Copyright © 2011-2022 走看看