学生成绩——顺序表

xiaoxiao2021-02-28  35

#include<iostream> using namespace std; const int max=10; template <class student> class SeqList { public: SeqList(student score[],int n); //构造函数,建立一个长度为n的顺序表 ~SeqList(){} //析构函数 void insert(int i,student x); //插入操作,在位置i插入元素x student Delete(int i); //在位置i删除对应元素 student get(int i); //按位查找,找位置i的元素 int locate(student x); //按值查找,找数值为x的元素 void print(); //遍历操作,按序号依次输出各元素 private: student data[max]; //存放数据元素的数组 int length; //线性表的长度 }; //构造函数 template <class student> SeqList<student>::SeqList(student score[],int n) { if(n>max)throw"参数非法"; for(int i=0;i<n;i++) data[i]=score[i]; length=n; } //插入操作 template <class student> void SeqList<student>::insert(int i,student x) { int j; if(length>max)throw"上溢"; if(i<1||i>=max)throw"位置非法"; for(j=length;j>=i;j--) data[j]=data[j-1]; data[i-1]=x; length++; } //删除操作 template <class student> student SeqList<student>::Delete(int i) { student p; int j; if(length==0)throw"下溢"; if(i<1||i>=max)throw"位置非法"; p=data[i-1]; for(j=i;j<length;j++) data[j-1]=data[j]; length--; return p; } //查找操作 //按位查找 template <class student> student SeqList<student>::get(int i) { if(i<1&&i>=length)throw"查找位置非法"; else return data[i-1]; } //按值查找 template <class student> int SeqList<student>::locate(student x) { for(int i=0;i<length;i++) if(data[i]==x) return i+1; //返回元素序号 return 0; } //输出操作 template <class student> void SeqList<student>::print() { for(int i=0;i<length;i++) cout<<data[i]<<" "; } int main() { float score[8]={95.5,78,87.5,65,100,84.5,75,69.5}; SeqList<float> Student(score,8); cout<<"初始数据如下:"<<endl; Student.print(); cout<<endl<<"在学生3插入成绩66,结果如下:"<<endl; Student.insert(3,66); Student.print(); cout<<endl<<endl<<"在学生5删除成绩为:"<<Student.Delete(5)<<endl<<"删除后结果如下:"<<endl; Student.print(); cout<<endl<<endl<<"学生6的成绩为:"<<Student.get(6); cout<<endl<<endl<<"成绩为100的学生所在位置为:"<<Student.locate(100)<<endl; cout<<"最终数据如下:"<<endl; Student.print(); cout<<endl; return 0; }
转载请注明原文地址: https://www.6miu.com/read-2631871.html

最新回复(0)