zoukankan      html  css  js  c++  java
  • 数据结构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年后自己又是一个什么样的。因为未知,所以生命才更加精彩。
  • 相关阅读:
    107. Binary Tree Level Order Traversal II
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    690. Employee Importance
    1723. Find Minimum Time to Finish All Jobs
    LeetCode 329 矩阵中最长增长路径
    7.2 物理内存管理
    LeetCode 面试题 特定深度节点链表
    LeetCode 100 相同的树
    npm安装包命令详解,dependencies与devDependencies实际区别
  • 原文地址:https://www.cnblogs.com/ashen/p/4419015.html
Copyright © 2011-2022 走看看