您的位置:首页 > 其它

线性表综合实验之顺序表

2017-10-13 21:43 225 查看
#include<iostream>
using namespace std;
const int Max=100;
template<class T>
class Seqlist
{
private:
T data[Max];
int length;
public:
Seqlist(){length=0;}
void Setlist(T a[],int n);
~Seqlist(){}
int Length();
T Number_get(int i);
int Location_get(T x);
void Insert(int i,T x);
T Delete(int i);
void Printlist();
};
template<class T>
void Seqlist<T>::Setlist(T a[],int n)
{   int i;
for(i=0;i<n;i++)
data[i]=a[i];
length=n;
if(n>Max) throw"错误";
}
template<class T>
int Seqlist<T>::Length()
{return length;}
template<class T>
T Seqlist<T>::Number_get(int i)
{
if(i<1&&i>length)throw "位置错误!";
else
return data[i-1];
}
template<class T>
int Seqlist<T>::Location_get(T x)
{
int i;
for(i=0;i<length;i++)
if(data[i]==x)
return i+1;
return 0;
}
template<class T>
void Seqlist<T>::Insert(int i,T x)
{
if(length>=Max)throw "上溢";
if(i<1||i>length)throw "位置错误";
for(int j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}
template<class T>
T Seqlist<T>::Delete(int i)
{
if(length==0)throw "下溢";
if(i<1||i>length)throw "位置错误";
for(int j=i;j<length;j++)
data[j-1]=data[j];
length--;
return data[i-1];
}
template<class T>
void Seqlist<T>::Printlist()
{
int i;
for(i=0;i<length;i++)
cout<<data[i]<<"   ";
cout<<endl;
}
int main()
{
Seqlist<int> student;
int stu[10]={90,87,95,77,80,91,74,89,92,97};
student.Setlist(stu,10);
cout<<"表的长度为:"<<student.Length()<<endl;
cout<<"学生成绩如下:"<<endl;
student.Printlist();
student.Number_get(3);
cout<<"第三位学生的成绩为:"<<student.Number_get(3)<<endl;
cout<<"成绩为90的学生序号为:"<<student.Location_get(90)<<endl;
cout<<"在序号为1的学生后面插进新成绩80:"<<endl;
student.Insert(1,80);
student.Printlist();
cout<<"删除序号为2的学生的成绩:"<<endl;
student.Delete(2);
student.Printlist();
return 0;
}

一、实验目的

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

二、.实验内容

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

          2、用顺序表实现。

三、实验结果截图



四、实验心得

        由于对顺序表的操作在实验一中有一定的练习与操作,所以做起来比较有思路。但是在本次实验中涉及得失学生成绩信息的管理,我一开始想到的是包含学生姓名、学号、科目、成绩等信息,但是这样类似于做一个学生信息管理系统,比较复杂,依照自己的能力还不能很好地实现,于是思考过后只是选择做出了单纯地以学生序号来录入学生的某一科成绩。

        该顺序表所实现的功能也许并没有多大的实际意义,但是作为让自己练习并熟悉顺序表的相关操作还是很有帮助的,至少在这次的练习中我又发现了自己的一些不足,比如对顺序表的创建与相关操作实现其实都是一个道理,但是我由于不太熟悉相关操作以致于第二次实验的时候还是需要不断地查阅资料,依然不能真正自己完成一项代码的编译,期间
4000
还是会出现不少的错误。但在解决错误过程中也学到了不少。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: