实验二顺序表

来源:互联网 发布:有没有哪种编程的实例 编辑:程序博客网 时间:2024/05/21 01:43

一、实验目的

巩固线性表的数据结构的存储方法和相关操作,学会针对具体应用,使用线性表的相关知识来解决具体问题。

二、实验内容

建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。

源代码为:

#include<iostream>    using namespace std;    const int MaxSize =100;    template <class DataType>    class SeqList    {public:    SeqList(){length=0;}//建立空的顺序表    SeqList(DataType a[],int n);//建立长度为n的顺序表    ~SeqList(){}//析构函数    int Length(){return length;}//求线性表的长度    DataType Get(int i);    int Locate (DataType x);    void Insert(int i,DataType x);//在位置i插入x    DataType Delete(int i);    void PrintList();    private :    DataType data[MaxSize];//存放数据元素的数组    int length;//线性表的长度    };    template <class DataType>//有参构造函数    SeqList<DataType>::SeqList(DataType a[],int n)    {if (n>MaxSize)throw"参数非法";    for (int i=0;i<n;i++)    data[i]=a[i];    length=n;    }    template <class DataType>//按位查找    DataType SeqList<DataType >::Get(int i)    {    if (i<1&&i>length)throw "查找位置非法";    else return data [i-1];    }    template <class DataType>//按值查找    int SeqList<DataType >::Locate (DataType x)    {for (int i=0;i<length ;i++)    if (data [i]==x)return i+1;    return 0;//查找失败,退出循环    }    template <class DataType>//插入    void SeqList<DataType >::Insert (int i ,DataType x)    {if (length>=MaxSize) throw "上溢";    if (i<1||i>length+1)throw"位置";    for (int j=length;j>=i;j--)   data[i]=data[j-1];    data[j-1]=x;    length++;    }    template <class DataType>//删除    DataType SeqList<DataType>::Delete(int i)    { int x;    if(length==0)throw "下溢";    if (i<1||i>length+1)throw"位置非法";    x=data[i-1];    for (int j=i;j<length;j++)    data[j-1]=data[j];    length--;    return x;    }template <class DataType>//输出    void SeqList<DataType>::PrintList(){for (int i=0;i<length;i++)cout <<data[i]<<" ";}    void main()    {float score[8]={100,98,77,76,84,88,90,100};    SeqList<float>List(score,8);//类模板定义对象    cout<<"数据表的所有数据为:"<<endl;    List.PrintList();//输出功能    cout<<endl<<"删除位置8的数据元素,输出结果为:"<<endl;    List.Delete(8);//删除功能    List.PrintList();    cout<<endl<<"在位置8加入数据元素66,输出数据为:"<<endl;    List.Insert(8,66);//插入功能    List.PrintList();    cout<<endl<<"查找操作"<<endl<<"“按位查找”查找位置8的数据元素值为:"<<endl;    cout<<List.Get(8)<<endl;    cout<<endl<<"“按值查找”查找值为98的数据元素的位置是:";    cout<<List.Locate(98)<<endl;    }