您的位置:首页 > 理论基础 > 数据结构算法

《数据结构》实验二:线性表实验(顺序表)

2014-10-26 15:38 225 查看
一、实验目的

巩固线性表的数据结构,学会线性表的应用。

1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作。

2.学习运用线性表的知识来解决实际问题。

3.进一步巩固程序调试方法。

4.进一步巩固模板程序设计。

二、实验内容

1.建立一个N个学生成绩的顺序表,对表进行插入、删除、查找等操作。分别输出结果。

#include<iostream>

using namespace std;

const int Maxsize = 100;

class Score

{

public:

Score(){ length = 0; }

Score(int a[], int n);

~Score(){ }

int Locate(int x);

void Insert(int i, int x);

int Delete(int i);

void Printlist();

private:

int data[Maxsize];

int length;

};

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

{

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

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

data[i] = a[i];

length = n;

}

void Score::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 Score::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 Score::Locate(int x)

{

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

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

return 0;

}

void Score::Printlist()

{

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

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

cout << endl;

}

void main()

{

int r[10] = { 89, 65, 74, 81, 67, 43, 66, 84, 100, 59 };

Score L(r, 10);

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

L.Printlist();

try

{

L.Insert(4, 55);

}

catch (char *s)

{

cout << s << endl;

}

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

L.Printlist();

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

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

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

L.Printlist();

try

{

L.Delete(1);

}

catch (char *s)

{

cout << s << endl;

}

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

L.Printlist();

int s;

cin >> s;

}


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