zoukankan      html  css  js  c++  java
  • 顺序表(C++)

    最近准备找工作了,在复习数据结构,下面是用C++写的顺序表的一个类(头文件)

    //公元2013年3月15日
    //Sequence List--By Paul
    
    #ifndef _SeqList_
    #define _SeqList_
    
    const int defaultSize=100;
    
    template <typename Type> class SeqList{
    public:
    	SeqList(int SZ=defaultSize):m_nmaxsize(SZ),m_ncurrentsize(-1){
    		if (SZ>0){
    			m_elements=new Type[m_nmaxsize];
    		}
    	}
    
    	~SeqList(){
    		delete[] m_elements;
    	}
    	int Length() const{
    		return m_ncurrentsize+1;
    	}
    	int Find(Type x) const;
    	int IsElement(Type x) const;
    	int Insert(Type x,int i);
    	int Remove(Type x);
    	int IsEmpty(){
    		return m_ncurrentsize==-1;
    	}
    	int IsFull()
    	{
    		return m_ncurrentsize==m_nmaxsize-1;
    	}
    	Type Get(int i){
    		return i<0||i>m_ncurrentsize?(cout<<"can't find the element"<<endl,0):m_element[i];
    	}
    	void Print();
    private:
    	Type *m_element;
    	const int m_nmaxsize;
    	int m_ncurrentsize;
    
    };
    
    //部分函数的实现。。。。。
    
    template <typename Type> int SeqList<Type>::Find(Type x) const
    {
    	for(int i=0;i<m_ncurrentsize;i++)
    	{
    		if(m_element[i]==x)
    			return i;
    	}
    	cout<<"Can't find the element  you want to find"<<endl;
    	return -1;
    }
    
    template <typename Type> int SeqList<Type>::IsElement(Type x) const
    {
    	if(Find(X)==-1)
    		return 0;
    	return 1;
    }
    
    template <typename Type> int SeqList<Type>::Insert(Type x,int i)
    {
    	if(i<0||i>mm_ncurrentsize+1||m_ncurrentsize==m_nmaxsize-1)
    	{
    		cout<<"The operation is illegal"<<endl;
    		return 0;
    	}
    	m_ncurrentsize++;
    	for(int j=m_ncurrentsize;j>i;j--)
    	{
    		m_element[j]=m_element[j-1];
    	}
    	m_element[i]=x;
    	return 1;
    }
    
    template <typename Type> int SeqList<Type>::Remove(Type x){
        int size=m_ncurrentsize;
        for(int i=0;i<m_ncurrentsize;){
            if(m_elements[i]==x){
                for(int j=i;j<m_ncurrentsize;j++){
                    m_element[j]=m_elements[j+1];
                }
                m_ncurrentsize--;
                continue;
            }
            i++;
        }
        if(size==m_ncurrentsize){
            cout<<"can't find the element you want to remove"<<endl;
            return 0;
        }
        return 1;
    }
     
    template <typename Type> void SeqList<Type>::Print(){
        for(int i=0;i<=m_ncurrentsize;i++)
            cout<<i+1<<":\t"<<m_element[i]<<endl;
        cout<<endl<<endl;
    }
    
    #endif

    (好像很久没写C++的代码了,比较生疏了,慢慢写,慢慢熟悉)


  • 相关阅读:
    Error 1313: RETURN is only allowed in a FUNCTION SQL Statement
    Error Code: 1318. Incorrect number of arguments for PROCEDURE student.new_procedure; expected 0, got
    Error Code: 1305. FUNCTION student.rand_string does not exist
    Error Code: 1630. FUNCTION rand.string does not exist
    初入职场少年时,谁人不犯错?——北漂18年(6)
    错误代码: 1064
    第30章 表维护
    消息系统kafka及其变种Jafka、Metamorphosis (MetaQ)
    KAFKA分布式消息系统
    FineReport的JS编辑框和URL地址栏语法简介
  • 原文地址:https://www.cnblogs.com/NewWork/p/3260603.html
Copyright © 2011-2022 走看看