实验二------顺序表

一.实验目的

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

 

二.实验时间

   准备时间为第3周到第4周,具体集中实验时间为第4周第2次课。2个学时。

 

三..实验内容

1.建立一个由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"位置异常";  
  int j;
for (j=length;j>=i;j--)   
data[j]=data[j-1];    
data[i-1]=x;    
length++;    
}    

template <class DataType>//删除    
DataType SeqList<DataType>::Delete(int i)    
{ int x;    
if(length==0)throw "下溢";    
if (i<1||i>length)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]<<" ";}

int main()
{  
   int grade[] = { 11,22,33,44,55 };
   
   SeqList<int>List1(grade,5);
   List1.PrintList();
   cout<<"长度为"<<List1.Length()<<endl;
   
   cout<<"请输入你要查找的位置的数据" <<endl;
   int r;
   cin>>r;
   cout<<List1.Get(r)<<endl;
    
    int o,p;
cout<<"请输入你想插入数据的位置o"<<endl;
cin>>o;
cout<<"请输入你想插入的数据p"<<endl;
cin>>p; 
  List1.Insert(o,p);
   List1.PrintList();
   //删除
   int q;
   cout<<"请输入你要删除的位置q"<<endl;
   cin>>q; 
   cout<<List1.Delete(q)<<endl; 
   List1.PrintList();
   
	
}

实验结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值