实验二顺序表

一、实验目的

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

二、实验内容

建立一个由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;    
}  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值