实验一

来源:互联网 发布:php b2c商城系统二次开 编辑:程序博客网 时间:2024/05/22 15:08

实验目的

熟练掌握线性表的结构特点, 掌握顺序表的基本操作。
巩固 C++相关的程序设计方法与技术。
学会使用顺序表解决实际问题。
实验内容

顺序表的建立与操作实现
建立 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]<<" ";}
int main(void)
{float score[8]={11,22,33,44,55,66,77,88};
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;

return 0;

}
原创粉丝点击