数据结构-线性表-顺序表(c++)

SeqList.h

#ifndef SEQLIST_H_
#define SEQLIST_H_
#include<iostream>
const int Max=100;
template<class T>
class SeqList{
private:
    T data[Max];
    int Length;
public:
    SeqList(){Length=0;}
    SeqList(T a[],int len);
    int GetLength()const;
    void Print()const;
    void Insert(T n,int i);
    void Delete(int i);
    int locate(int x);
    T Get(int i);
    void sort();
};
template<class T>
SeqList<T>::SeqList(T a[],int len)
{
    if(len>Max)throw"超过最大值";
    for(int i=0;i<len;i++)
    {
        data[i]=a[i];
    }
    Length=len;
}
template<class T>
int SeqList<T>::GetLength()const
{
    return Length;
}
template<class T>
void SeqList<T>::Print()const
{
    int i;
    for(i=0;i<Length;i++)
    {
         std::cout<<data[i]<<" ";
         if(i%5==4)
            std::cout<<std::endl;
    }
       if(i%5!=0)
        std::cout<<std::endl;
}
template<class T>
void SeqList<T>::Insert(T n,int i)
{
    if(Length>=Max)throw"列表已经满了,无法插入!";
    if(i<0||i>Length)throw"插入位置不正确!";
    for(int len=Length-1;len>=i-1;len--)
    {
        data[len+1]=data[len];
    }
    data[i-1]=n;
    data[Length+1]='\0';
    Length++;
}
template<class T>
void SeqList<T>::Delete(int i)
{
    if(Length<=0)throw"列表为空,无法删除!";
    if(i<0||i>Length)throw"删除位置不正确!";
    for(int len=i-1;len<Length;len++)
    {
        data[len]=data[len+1];
    }
    data[Length-1]='\0';
    Length--;
}
template<class T>
 int SeqList<T>::locate(int x)
 {
     if(Length<=0)throw"列表为空,无法查找";
     for(int i=0;i<Length;i++)
     {
         if(data[i]==x)return i+1;
     }
     return -1;
 }
 template<class T>
T SeqList<T>::Get(int i)
{
    if(Length<=0)throw"列表为空,无法查找";
    if(i<0||i>Length)throw"查找位置不正确!";
    return data[i-1];
}
template<class T>
void SeqList<T>::sort()
{
    if(Length<=0)throw"列表为空,无法排序";
    for(int i=0;i<Length;i++)
        for(int j=0;j<Length-1-i;j++)
    {
        if(data[j]>data[j+1])
        {
             data[j]^=data[j+1];
             data[j+1]^=data[j];
             data[j]^=data[j+1];
        }
    }
}
#endif // SEQLIST_H_

SeqList.cpp

#include<iostream>
#include"SeqList.h"
#include<cstring>
int main()
{
    using std::cout;
    using std::cin;
    using std::endl;
    int s[10]={9,3,2,4,1,6,0,5,7,8};
    SeqList<int> grade(s,10);
    cout<<"数组长度为:"<<grade.GetLength()<<endl;
    cout<<"数组为:"<<endl;
    grade.Print();
    grade.Insert(10,2);
    cout<<"插入后:"<<endl;
    grade.Print();
    cout<<"0的位置:";
    cout<<grade.locate(0)<<endl;
    cout<<"删除0(8的位置)后:"<<endl;
    grade.Delete(8);
    grade.Print();
    cout<<"排序后:"<<endl;
    grade.sort();
    grade.Print();
    cout<<"第10位置值:"<<grade.Get(10)<<endl;
    cout<<"数组长度为:"<<grade.GetLength()<<endl;
}
原创文章 18 获赞 5 访问量 935

猜你喜欢

转载自blog.csdn.net/qq_40666149/article/details/106170378