您的位置:首页 > 其它

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

2017-09-24 11:57 387 查看
一、实验目的:

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

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

3.学会使用顺序表解决问题。

二、实验内容:

1.顺序表的建立与操作。实现输入,删除,插入,查找等功能。(不限语言及技术形式。)

三、程序代码:

1.先建立一个名为Seqlisy.h的头文件,其中包含有seqlist类的定义。

#ifndef Seqlist_H

#define Seqlist_H

const int MaxSize = 10;
class Seqlist

{

public:

 Seqlist() { length = 0; }

 Seqlist(int a[], int n)

 {

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

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

   data[i] = a[i];

  length = n;

 }

 ~Seqlist(){}

 void Insert(int i, int x);

 int Delete(int i);

 int Locate(int x);

 void Printlist();

private:

 int data[MaxSize];

 int length;

};

#endif // !Seqlist_H
2.建立一个源文件,其中包含有类中成员函数的声明等,以及主函数。

#include<iostream>

using namespace std;

#include"Seqlist.h"
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 - 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();

}

四、实验心得:
通过本次实验,我发现自己的c++编程能力还是明显存在不足,仍然需要多操作多实践,不能仅仅停留在理论知识以及课本内容上。
同时,我也应该在课余时间多摸索不同的方式去实现需要的功能,不能一直使用一种方法。而在本次实验中,我采用了添加头文件的方式去编译,使得代码更加清晰,简明。
在之后的学习中,我也将继续去寻找更简便的方法去达到功能的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: