zoukankan      html  css  js  c++  java
  • 数据结构线性表顺序表示 (二)

    线性表的顺序表示(二):

    头文件:seqlist.h

    #include "linearlist.h"
    
    template <class T>
    class SeqList:public LinearList<T>
    {
    	private:
    		int maxLength;	// 顺序表的最大长度
    		T *elements;	// 动态一维数组的指针
    
    	public:
    		SeqList(int mSize);
    		~SeqList();
    		bool IsEmpty() const;
    		int Length() const;
    		bool Find(int i, T &x) const;		
    		int Search(T x) const;				
    		bool Insert(int i, T x);			
    		bool Delete(int i);					
    		bool Update(int i, T x);			
    		void Output(ostream &out) const;		
    };
    
    
    template <class T>
    SeqList<T>::SeqList(int mSize)
    {
    	maxLength = mSize;
    	elements = new T[maxLength];
    	n = 0;
    }
    
    template <class T>
    SeqList<T>::~SeqList()
    {
    	delete[] elements;
    }
    
    template <class T>
    bool SeqList<T>::IsEmpty() const
    {
    	return n == 0;
    }
    
    template <class T>
    int SeqList<T>::Length() const
    {
    	return n;
    }
    
    template <class T>
    bool SeqList<T>::Find(int i, T &x) const
    {
    	if (i < 0 || i > n-1) {
    		cout << "Out of Bounds"<<endl;
    		return false;
    	}
    	x = elements[i];
    	return true;
    }
    
    template <class T>
    int SeqList<T>::Search(T x) const
    {
    	for(int i = 0; i < n; i++ ) {
    		if(elements[i] == x) {
    			return i;
    		}
    	}
    	return -1;
    }
    
    template <class T>
    bool SeqList<T>::Insert(int i, T x)
    {
    	if(i < -1 || i > n-1) {
    		cout<<"Out Of Bounds"<<endl;
    		return false;
    	}
    
    	if(n == maxLength) {
    		cout<<"OverFlow"<<endl;
    		return false;
    	}
    
    	for( int j = n-1; j>i; j--) {
    		elements[j+1] = elements[j];
    	}
    	elements[i+1] = x;
    	n++;
    	return true;
    }
    
    template <class T>
    bool SeqList<T>::Delete(int i)
    {
    	if(n == 0) {
    		cout << "UnderFlow" <<endl;
    		return false;
    	}
    
    	if(i < -1 || i > n-1) {
    		cout<<"Out Of Bounds"<<endl;
    		return false;
    	}
    
    	for( int j = i + 1; j < n; j++) {
    		elements[j-1] = elements[j];
    	}
    
    	n--;
    	return true;
    }
    
    template <class T>
    bool SeqList<T>::Update(int i, T x)
    {
    	if(i < -1 || i > n-1) {
    		cout<<"Out Of Bounds"<<endl;
    		return false;
    	}
    
    	elements[i] = x;
    	return true;
    }
    
    template <class T>
    void SeqList<T>::Output(ostream &out) const
    {
    	for(int i = 0; i < n; i++ ) {
    		out << elements[i];
    		if(i != n-1) {
    			out<<" "; 
    		}
    	}
    	out << endl;
    }
  • 相关阅读:
    NOIP 2016 回文日期
    USACO Ski Course Design
    USACO Combination Lock
    USACO 利润Profits
    POJ 3368 Frequent values
    USACO Balanced Lineup
    JDOJ 1065 打倒苏联修正主义
    JDOJ 2174 忠诚
    VIJOS-P1514 天才的记忆
    VIJOS-P1423 最佳路线
  • 原文地址:https://www.cnblogs.com/matrix77/p/2189512.html
Copyright © 2011-2022 走看看