实验一:线性表的基本操作实现及其应用
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++编程能力还是明显存在不足,仍然需要多操作多实践,不能仅仅停留在理论知识以及课本内容上。
同时,我也应该在课余时间多摸索不同的方式去实现需要的功能,不能一直使用一种方法。而在本次实验中,我采用了添加头文件的方式去编译,使得代码更加清晰,简明。
在之后的学习中,我也将继续去寻找更简便的方法去达到功能的实现。
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++编程能力还是明显存在不足,仍然需要多操作多实践,不能仅仅停留在理论知识以及课本内容上。
同时,我也应该在课余时间多摸索不同的方式去实现需要的功能,不能一直使用一种方法。而在本次实验中,我采用了添加头文件的方式去编译,使得代码更加清晰,简明。
在之后的学习中,我也将继续去寻找更简便的方法去达到功能的实现。
相关文章推荐
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一:线性表的基本操作实现及其应用(C++)
- 实验一 线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用
- 实验一 线性表的基本操作实现及其应用
- 实验一线性表的基本操作实现及其应用(JavaScript实现)