实验一:数据结构顺序表的建立

实验一 线性表的基本操作实现及其应用

一、实验目的

1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。

2、巩固 C++相关的程序设计方法与技术。

3、学会使用顺序表解决实际问题。

二、实验内容

1、顺序表的建立与操作实现 建立 n 个元素的顺序表(n 的大小和表里数据自己确定)。

2、实现相关的操作:输出,插入,删除,查找等功能。

3、编写完整程序实现,程序语言不限定,使用技术形式不定。


 源代码如下:

#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]={10,11,12,13,14,15,16,17};
SeqList<float>List(score,8);//类模板定义对象
cout<<"数据表的所有数据为:"<<endl;
List.PrintList();//输出功能
cout<<endl<<"删除位置7的数据元素,输出结果为:"<<endl;
List.Delete(7);//删除功能
List.PrintList();
cout<<endl<<"在位置6加入数据元素18,输出数据为:"<<endl;
List.Insert(6,18);//插入功能
List.PrintList();
cout<<endl<<"查找操作"<<endl<<"“按位查找”查找位置5的数据元素值为:"<<endl;
cout<<List.Get(5)<<endl;
cout<<endl<<"“按值查找”查找值为18的数据元素的位置是:";
cout<<List.Locate(18)<<endl;
}


运行结果如下:



分析总结:

在实验室写代码时,对模板类和顺序表很陌生,所以花费了很多的时间去看书,有很多代码都是参照书本的,但是在几天的努力下,总算顺利完成了顺序表的建立,较熟练掌握线性表的结构特点和顺序表的基本操作。还巩固了 C++类模板的应用。但我还有很多东西要学,希望在接下来的学习中更加熟练的掌握程序设计。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值