• 数据结构1---线性表


    C++Primer后面的高级特性看不下去,重新找了一本数据结构的书来看,加油!!书名叫《数据结构算法与C++语言描述》!

    基本完成插入,查找,删除,打印,哦,对了,那个operator<<的重载感觉似懂非懂!!!

    参考代码如下:

    #include<iostream>
    
    //using namespace std;
    
    template<class T>
    class LinearList{
    	public:
    	LinearList(int maxListSize = 0);
    	~LinearList(){	}
    	bool IsEmpty(){return bool(length);	};
    	int Length(){return length;	};
    	bool Find(int k,T& x);
    	int Search(const T& a) const;
    	LinearList<T>& Delete(int k,T &x);
    	LinearList<T>& Insert(int k,T& x);
    	void OutPut(std::ostream &out)const;
    	private:
    		int length;
    		int MaxSize;
    		T *element;
    };
    template<class T>
    LinearList<T>::LinearList(int MaxLS){
    	MaxSize = MaxLS;
    	length = 0;
    	element = new T[MaxLS];
    }
    template<class T>
    bool LinearList<T>::Find(int k, T &x){
    		if(k>MaxSize||k<0)return false;
    		x = element[k-1];
    		return true;	
    }
    template<class T>
    int LinearList<T>::Search(const T &a)const{
    	for(int i = 0;i < MaxSize; ++i){
    		if(element[i] == a)return i++;
    		}
    	return 0;
    }
    template<class T>
    LinearList<T>& LinearList<T>::Delete(int k,T &x){
    	if(this->Find(k,x)){
    		for(int i = k-1;i<MaxSize;i++){
    		element[i-1] = element[i];
    		}
    		length = length - 1;
    		std::cout<<length<<std::endl;
    		return *this;
    	}
    }
    
    template<class T>
    LinearList<T>& LinearList<T>::Insert(int k,T &x){
    	if(length == MaxSize){ std::cout<<"FULL!"<<std::endl;} 
    	for(int i = MaxSize;i > k-1;i--){
    		element[i] = element[i-1];		
    	}
    	element[k] = x;
    	length++;
    	return *this;
    }
    
    template<class T>	
    void LinearList<T>::OutPut(std::ostream &out)const{
    	for(int i = 0;i < length;i++)
    	out<<element[i]<<" ";
    }
    
    template<class T>
    std::ostream& operator<<(std::ostream& out,const LinearList<T>& a)
    {
    	a.OutPut(out);
    	return out;
    }
    
    	
    int main()
    {
    	int ftest = 0;
    	LinearList<int> ll(5);
    	for(int i = 0; i< 5; ++i){
    		int temp =  i * i;
    		ll.Insert(i,temp);
    	}
    	std::cout<<ll.Length()<<std::endl;
    	std::cout<<ll<<std::endl;
    	ll.Find(2,ftest);
    	std::cout<<ftest<<std::endl;
    	
    	ll.Delete(2,ftest);
    	std::cout<<ll.Length()<<std::endl;
    	std::cout<<ll<<std::endl;
    
    	return 0;
    }
    

      

    很多时候我都在期待3年后的自己是一个什么样的,5年后自己又是一个什么样的。因为未知,所以生命才更加精彩。
  • 相关阅读:
    Button 使用Command 按钮置灰未更新
    C# TextBox 焦点
    MultiTigger 绑定异常处理
    C# 获取程序路径
    Linux 权限设置chmod
    WPF SpreadSheetGear电子表单
    WPF 窗口
    Excel公式 提取文件路径后缀
    C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)
    DevExpress Carousel 设置水平滑动列表
  • 原文地址:https://www.cnblogs.com/ashen/p/4419015.html
Copyright © 2020-2023  润新知