您的位置:首页 > 其它

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

2017-09-21 10:49 375 查看
一、实验目的

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

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

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

二、实验内容

  顺序表的建立与操作实现建立 n 个元素的顺序表,实现相关的操作:输出,插入,删除,查找等功能。编写完整程序实现,程序语言不限定,使用技术形式不定。

三、实验步骤

1、依据实验内容分别说明实验程序中用到的数据类型的定义;

2、相关操作的算法表达;

3、完整程序。

四、实验心得

参考课本的代码,然后自己加以修改一些,最终形写成这个程序。写完程序后再运行过程中,还是会出现一些情况,比如一些细节:忘记定义数据类型,还有出现漏分号这样的低级错误。另外,程序要多些注释,这样方便别人阅读。

*源程序代码:

#include "stdafx.h"

#include <iostream>

using namespace std;

const int MaxSize = 20;

class SeqList

{

public:

         SeqList(){ length = 0; }

         SeqList(inta[], int n);

         ~SeqList(){}

         int Get(int i);

         int Locate(int x);

         void Insert(int i, int x);

         int Delete(int i);

         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;

}

 

 

int SeqList::Get(int i)

{

         if(i<1 && i>length) throw"查找位置非法";

         else return data[i - 1];

}

 

int SeqList::Locate(int x)

{

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

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

         return 0;

}

 

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 = i; j<length; j++)

                  data[j- i] = data[j];

         length--;

         returnx;

}

 

void SeqList::PrintList()

{

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

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

         cout<< endl;

}

void main()

{

         intr[10] = { 1,3,5,7,9,11,13,2,4,6 };

         SeqListL(r, 10);

         cout<< "执行前的数据为:" << endl;

         L.PrintList();                                             //输出之前的数据

         cout<< "第五个元素的值为:" << endl;

         cout<< L.Get(5) << endl;                      //输出位置为5的数据

         try

         {

                  L.Insert(2,8);                              // 在第二位插入数据8

         }

         catch(char *s)

         {

                  cout<< s << endl;

         }

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

         L.PrintList();                                      //输出插入新数据后的全部数据

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

         cout<< L.Locate(11) << endl;       //输出数据值为11的所在位置

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

         L.PrintList();

         try

         {

                  L.Delete(6);

         }

         catch(char *s)

         {

                  cout<< s << endl;

         }

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

         L.PrintList();                          //输出删除位置为6的数据后的全部数据

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: