C++顺序表(实验一)

来源:互联网 发布:云计算行业发展 编辑:程序博客网 时间:2024/06/15 09:01
一、实验目的
1、熟练掌握线性表的结构特点,掌握顺序表的基本操作。
2、巩固 C++相关的程序设计方法与技术。
3、学会使用顺序表解决实际问题。 二、实验内容
1、顺序表的建立与操作实现
建立 n 个元素的顺序表(n 的大小和表里数据自己确定),实现相关的操作:输出,插
入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。
2、实际问题的解决(*)
使用顺序表来实现约瑟夫环问题。
#include<iostream>using namespace std;const int MaxSize=20;  //线性表最多有二十个元素class SeqList{public:SeqList(){length=0;}            //无参构造函数,创建一个空表SeqList(int a[],int n);         //有参构造函数~SeqList(){}                    //析构函数void Insert(int i,int x);       //在线性表第i个位置插入值为x的袁术int Delete(int i);              //删除线性表的第i个元素int Locate(int x);              //求线性表中值的为x的元素序号void PrintList();               //按序号依次输出各元素private:int data[MaxSize];              //存放数据元素的数组int length;                     //线性表的长度};SeqList::SeqList(int a[],int n){if(n>MaxSize)throw"参数非法";for(int i=0;i<n;i++)data[i]=a[i];length=n;}void SeqList::Insert(int i,int x){if(length>=MaxSize)throw"上溢";if(i<1||i>length+1)throw"查找位置非法";for(int j=length;j>=i;j--)data[j]=data[j-1];data[i-1]=x;length++;}int SeqList::Delete(int i){if(length==0)throw"下溢";if(i<1||i>length)throw"查找位置非法";int x=data[i-1];for(int j;j<length;j++)data[j-1]=data[j];length--;return x;}int SeqList::Locate(int x){for(int i=0;i<length;i++)if(data[i]==x)return i+1;return 0;}void SeqList::PrintList(){for(int i=0;i<length;i++)cout<<data[i]<<" ";cout<<endl;}void main(){int r[5]={1,2,3,4,5};SeqList L(r,5);cout<<"执行插入操作前数据为:"<<endl;L.PrintList();try{L.Insert(2,3);}catch(char*s){cout<<s<<endl;}cout<<"执行插入操作后数据为:"<<endl;L.PrintList();cout<<"值为3的元素位置为:";cout<<L.Locate(3)<<endl;cout<<"执行删除第一个元素操作,删除前数据为:"<<endl;L.PrintList();try{L.Delete(1);}catch(char*s){cout<<s<<endl;}cout<<"删除后数据为:"<<endl;L.PrintList();}