实验一:顺序表的实现

来源:互联网 发布:网易音乐经典评论知乎 编辑:程序博客网 时间:2024/05/22 17:14

实验一

顺序表的实现

(1)    实验目的

  熟练掌握线性表的结构特点,掌握顺序表的基本操作,巩固c++相关的程序设计方法与技术

(2)    实验内容

  建立若干个元素的顺序表

实现相关的操作,输出、插入、删除、查找等功能,编写完整程序实现

(3)    实验步骤

实验程序中用到的数据类型的定义:int、char

相关操作的算法表达:

输入输出,线性表的长度为length,将数据存放在头文件中建立的数组data[maxsize]中,输入时出现length大于maxsize出现上溢,为零则出现下溢。

插入,用j标记元素所在的数组.将第j个元素存在数组下标为j-1的位置

查找,用循环语句,在数组中寻找该元素,直到相等,停止循环

删除,先利用查找功能找出元素位置,利用j位置替换j-1位置

完整程序:

#ifndef SeqList_H                               //头文件

#define SeqList_H

const int Maxsize=12;

class SeqList

{

public:

      SeqList(){length=0;}

      SeqList(inta[],int n);

      ~SeqList(){}

      voidInsert(int i,int x);

      intDelete(int i);

      intLocate(int x);

      voidPrintList();

private:

      intdata[Maxsize];

      intlength;

};

#endif

 

#include<iostream> //引入输入输出流

using namespace std;

#include"SeqList.h"   

//以下是类seqlist的声明

SeqList::SeqList(int a[],int n)

{

      if(n>Maxsize)throw"参数非法";

      for(inti=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(intj=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"位置非法";

      intx=data[i-1];

      for(intj=i;j<length;j++)

           data[j-1]=data[j];

      length--;

      returnx;

}

int SeqList::Locate(int x)         //查找功能

{

      for(inti=0;i<length;i++)

           if(data[i]==x)return i+1;

           return0;

}

void SeqList::PrintList()           //输出功能

{

      for(inti=0;i<length;i++)

           cout<<data[i]<<"";

      cout<<endl;

}

 

#include<iostream>                  //主函数

using namespace std;

#include"SeqList.h"

void main()

{

      intr[8]={1,2,3,4,5,6,7,8};

      SeqListL(r,8);

      cout<<"执行插入操作前数据为:"<<endl;

      L.PrintList();

      try

      {

           L.Insert(4,8);

      }

      catch(char*s)

      {

           cout<<s<<endl;

      }

      cout<<"执行插入操作后数据为:"<<endl;

      L.PrintList();

      cout<<"值为4的元素位置为:";

      cout<<L.Locate(4)<<endl;

      cout<<"执行删除第四个元素操作,删除前数据为:"<<endl;

      L.PrintList();

      try

      {

           L.Delete(4);

      }

      catch(char*s)

      {

           cout<<s<<endl;

      }

      cout<<"删除后数据为:"<<endl;

      L.PrintList();

}

(4)运行结果

 

(5)实验心得

这是数据结构的第一节实验课,顺序表既线性表的顺序存储结构,在理论课上对顺序表的概念还有点模糊,在实验课上可以得到进一步的理解。在实验过程中,我只实现了基本的功能,所以我需要向同学多参考多学习。数据结构的学习需要结合c++,所以我要不断回顾之前的c++知识。


原创粉丝点击