信管117229谢胜祥数据结构实验一

头文件:

#ifndef seqlist_H
#define seqlist_H
const int maxsize=100;
class seqlist
{
  int data[maxsize];      //存放数据元素的数组
  int length;                  //线性表的长度
public:
seqlist(){length=0;}    //无参构造函数,建立一个空的顺序表
seqlist(int a[],int n);     //有参构造函数,建立一个长度为n的顺序表
~seqlist(){}                //析构函数
int get(int i);         //按位查找,在线性表中查找第i个元素
int locate(int x);       //按值查找,在线性表中查找值为x的元素序号
void insert(int i,int x);   //插入操作,在线性表中第i个位置插入值为x的元素
int dele(int i);   //删除操作,删除线性表的第i个元素
void printlist();         //遍历操作,按序号依次输出个元素
};

#endif

子函数:

#include<iostream>
using namespace std;
#include"seqlist.h"


seqlist::seqlist(int a[],int n) //线性表的初始化
{
if(n>maxsize) throw"参数非法";
int i;

    cout<<"请输入线性表的数据:"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
for(i=0;i<n;i++)
data[i]=a[i];
length=n;
 }

int seqlist::get(int i) //按位查找
{
if(i<1&&i>length) throw"查找位置非法";
else return data[i-1];
}

int seqlist::locate(int x)//按值查找
{
    int i;
for(i=0;i<length;i++)
if(data[i]==x)
return i+1;
return 0;
}

void seqlist::insert(int i,int x)//插入一个数据元素
{
    int j;
    if(length>=maxsize) throw"上溢";
if(i<1||i>length+1) throw"位置异常";
for(j=length;j>=i;j--)
data[j]=data[j-1];
data[i-1]=x;
length++;
}

int seqlist::dele(int i)//按位删除一个数据元素
{
    int x;
    if(length==0) throw"下溢";
if(i>maxsize||i<1) throw"位置错误";
x=data[i-1];
for(;i<length;i++)
data[i-1]=data[i];
length--;
return x;
}

void seqlist::printlist() //遍历操作
{
    int i;
for(i=0;i<length;i++)
cout<<data[i]<<"\t";
cout<<endl;
}

主函数:

#include<iostream>
using namespace std;
#include"seqlist.h"


void main()
{
    int i;
    int *s;
    s=new int[maxsize];
    cout<<"请输入线性表的长度:"<<endl;
    cin>>i;
seqlist l(s,i);
    cout<<"原数据为:"<<endl;
    l.printlist();
    l.get(3);
    cout<<"第三位的值为:"<<l.get(3)<<endl;
    l.locate(5);
    if(l.locate(5)==0) cout<<"表内无该值"<<endl;
    else cout<<l.locate(5)<<"该值为线性表中第"<<l.locate(5)<<"位"<<endl;
    try
    {
    l.insert(4,25);
    }
    catch(char *s)
    {
        cout<<s<<endl;
    }
    cout<<"执行插入操作后数据为:"<<endl;
l.printlist();
try
{l.dele(2);}
catch(char *s)
{
    cout<<s<<endl;
}
cout<<"执行删除操作后数据为:"<<endl;
l.printlist();
delete []s;
}







猜你喜欢

转载自blog.csdn.net/x1432553805/article/details/79782996