建立一个由 n 个学生成绩的顺序表,n 的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果
#include<iostream>
using namespace std;
const int MaxSize=100;
class SeqList
{
public:
SeqList(){length=0;} //建立空的顺序表
SeqList(int a[],int n); //建立长度为n顺序表
~SeqList(){}
int Length(){return length;} //求长度
int Get(int i); //按位查找,第i个
void Input (int i,int x); //插入
int Delete(int i); //删除
void Print(); //输出
private:
int data[MaxSize]; //存放数据元素的数组
int length; //线性表长度
};
SeqList::SeqList(int a[],int n) //求长度
{ int i;
if(n>MaxSize)throw"参数非法";
for(i=0;i<n;i++)
data[i]=a[i];
length=n;
}
int SeqList::Get(int i) //按位查找,第i个
{
if(i<1&&i>length) throw"查找位置非法";
else return data[i-1];
}
void SeqList::Input(int i,int x) //插入
{ int j;
if(length>=MaxSize)throw"上溢";
if(i<1||i>length+1)throw"位置";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
int SeqList::Delete(int i) //删除
{ int x,j;
if(length==0)throw"下溢";
if(i<1||i>length)throw"位置";
x=data[i-1];
for(j=i;j<length;j++)
data[j-1]=data[j];
length--;
return x;
}
void SeqList::Print() //输出
{
int i;
for(i=0;i<length;i++)
cout<<"第"<<i+1<<"位学生成绩:"<<data[i]<<endl;
cout<<endl;
}
void main()
{int i;
int r[5]={80,90,70,60,50};
SeqList L(r,5);
cout<<"录入学生信息:"<<endl;
L.Print();
cout<<"在第2个位置插入85"<<endl;
L.Input(2,85);
cout<<"插入后学生成绩为:"<<endl;
L.Print();
cout<<"第三位学生成绩为:"<<endl;
cout<<L.Get(3)<<endl;
cout<<"删除第一个学生成绩"<<endl;
L.Delete(1);
cout<<"删除后学生成绩为:"<<endl;
L.Print();}