顺序表类和模板类验证实验报告

该实验报告详细介绍了验证顺序表类和模板类的过程,包括实验目的、内容、设计编码和运行测试。实验涉及线性表的顺序存储结构,实现了插入、删除、查找等操作,并对异常处理进行了测试。报告还揭示了教科书中一处关于异常处理的错误,并给出了修正方案。
摘要由CSDN通过智能技术生成

实验题目:验证顺序表类和模板类

一、实验目的

  1. 掌握线性表的顺序存储结构;
  2. 验证顺序表及其基本操作的实现;
  3. 理解算法与程序的关系,能够将顺序表算法转换为对应的程序。

二、实验内容

  1. 建立含有若干个元素的顺序表;
  2. 对已建立的顺序表实现插入、删除、查找等基本操作;
  3. 在《数据机构(C++版)学习辅导与实验指导》P171的基础上,
    1. 加入求线性表的长度等操作;
    2. 重新给定测试数据,验证抛出异常机制。

三、设计和编码

1. 本实验用到的理论知识

线性表(顺序存储结构)

2. 算法设计

大部分接口实现已经给出,详见《数据机构(C++版)学习辅导与实验指导》P172。下面只给出书上没有的求长度和按位查找的算法设计。

下面我们只以顺序表类举例,顺序表模板类的有关算法实现大同小异。

求长度

由于已经存储了length,直接返回即可。

伪代码如下

int Length() { return length; }
时间复杂度 空间复杂度
O ( 1 ) O(1) O(1) O ( 0 ) O(0) O(0)
按位查找,在线性表中查找第i个元素
int Get(int i) {
   
    if (length == 0) throw "下溢";
    if (i < 1 || i > length) throw "位置非法";
    return data[i - 1];
}
时间复杂度 空间复杂度
O ( 1 ) O(1) O(1) O ( 0 ) O(0) O(0)

3. 编码

书本上用的是void main(),下已更正。

程序清单如下

顺序表类
// SeqList_main.cpp
// Encoding: UTF-8

#include <iostream> //引入输入输出流
using namespace std;
#include "SeqList.h" //引入类SeqList的声明

int main()
{
   
    int r[5] = {
   1, 2, 3, 4, 5};
    SeqList L(r, 5);

    cout << "执行插入操作前数据为:" << endl;
    L.PrintList(); //输出所有元素
    cout<<"SeqList Length: "<<L.Length()<<endl; //输出顺序表长度

    try
    {
   
        L.Insert(2, 3); //在第2个位置插入值为3的元素
    }
    catch (char *s)
    {
   
        cout << s << endl;
    }
    cout << "执行插入操作后数据为:" << endl;
    L.PrintList(); //输出所有元素

    cout << "值为3的元素位置为:";
    cout << L.Locate(3) << endl; //查找元素3,并返回在顺序表中位置

    cout << "执行删除第一个元素操作,删除前数据为:" << endl;
    L.PrintList(); //输出所有元素
    cout<<"SeqList Length: "<<L.Length()<<endl; //输出顺序表长度
    try
    {
   
        L.Delete(1); //删除第1个元素
    }
    catch (char 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值