顺序表实验2

《数据结构》

实验报告

题目:_顺序表的实现

学号:___________

姓名:___________

东南大学计算机系

实验题目

一、    实验目的

1.    掌握顺序表的基本操作,实现顺序表的插入、删除、查找等基本运算。

二、    实验内容

1.                       完善顺序表的定义,并运用其实现线性表的操作。
2.                       (课上任务)

选题一:集合的交、并、差运算

【问题描述】

        编制一个能演示执行集合的交、并和差运算的程序。

【任务要求】

1) 集合元素用小写英文字母,执行各种操作应以对话方式执行。

2) 算法要点:利用顺序表表示集合;理解好三种运算的含义

【测试数据】

自行设定,注意边界等特殊情况。

选题二:文章编辑

功能:输入一页文字,程序可以统计出文字、数字、空格的个数。

静态存储一页文章,每行最多不超过80个字符,共N行;要求①分别统计出其中英文字母数和空格数及整篇文章总字数;②统计某一字符串在文章中出现的次数,并输出该次数;③删除某一子串,并将后面的字符前移。

存储结构使用顺序表,分别用几个子函数实现相应的功能;

输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:①分行输出用户输入的各行字符;②分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";③输出删除某一字符串后的文章;

选题三:构造有序顺序表

要求:进一步完善SqList类模板,实现顺序表的按值插入元素,即顺序表为递增有序表,插入元素后仍递增有序。

方法:在sq_list.h中添加代码,在SqList类模板的定义中添加函数声明,在类模板实现部分实现该函数。

bool  CreateListOrder();
bool  InsertOrder(ElemType e);

三、    实验步骤

1.启动VC6.0:开始菜单→程序→Microsoft Visual Studio 6.0 →Microsoft Visual C++ 6.0
2.建立工程:文件(File)→新建(new)→在弹出的对话框中选择工程标签(Project)→选中选项:Win32 Console Application(不能选别的)→输入工程名(Project Name)→选择工程的存放位置(Location)→单击“确定”按钮(OK)→在弹出的对话框中选中选项:An Empty Project→单击“完成”按钮(Finish)→在弹出的对话框中单击“确定”按钮( OK )。
3.创建头文件:文件(File)→新建(new)→在弹出的对话框中选择文件标签(Files) →选中选项:C/C++ Header File→输入头文件名(此处定义为“sq_list.h”)→单击“确定”按钮(OK)。
sq_list.h内容如下:
#ifndef __SQ_LIST_H__
#define __SQ_LIST_H__
// 顺序表类模板
template <class ElemType>
class SqList 
{
protected:
// 顺序表实现的数据成员:
        int count;                 // 元素个数
        int maxSize;              // 顺序表最大元素个数
        ElemType *elems;          // 元素存储空间
public:
// 顺序表的方法声明:
     SqList(int size); // 初始化线性表
     virtual ~SqList()    // 销毁线性表
     bool CreateList(); //构建顺序表
     void Clear();             // 将线性表清空
     int Length() ;    // 求线性表长度                
     bool Empty() ;    // 判断线性表是否为空
     bool Full() ;     // 判断线性表是否已满
     bool SetElem(int position, ElemType e);// 设置指定位置的元素值
     bool GetElem(int position, ElemType &e) ;    // 求指定位置的元素
int Locate (ElemType  e); //元素定位
      bool Insert(int position,  ElemType e);// 插入元素
      bool Delete(int position, ElemType &e);// 删除元素     
void Traverse() ;                       // 遍历线性表
};
// 顺序表类模板的实现部分由学生自己完成
……
5. 创建源程序文件main.cpp:文件(File)→新建(new)→在弹出的对话框中选择文件标签(Files) →选中选项:C++ Source File→输入源程序文件名(main)→单击“确定”按钮(OK)。
main.cpp文件内容可参考下述代码:
#include "sq_list.h"   // 顺序表类
void main(void)
{
    int size=0;
cout<<”请输入顺序表最大长度:”;
cin>>size;
    SqList<int> sl(size);
    char c = ‘0‘;
    while (c != ‘13‘)
{
        cout << endl << "1. 输入线性表,创建顺序表";
        cout << endl << "2. 求线性表长度";
        cout << endl << "3. 判断线性表是否为空";
        cout << endl << "4. 判断线性表是否已满";
        cout << endl << "5. 修改线性表某元素值";
        cout << endl << "6. 求线性表某位置元素值";
        cout << endl << "7. 在线性表中查找元素";
        cout << endl << "8. 在线性表中插入元素";
        cout << endl << "9. 在线性表中删除元素";
        cout << endl << "10. 遍历线性表";
        cout << endl << "11. 清空线性表";
        cout << endl << "12. 销毁线性表";
        cout << endl << "13. 退出";
        cout << endl << "选择功能(1~13):";    
cin >> c;
        switch (c) e
        {
            case ‘1‘:sl.CreateList(); break;
             case ‘2‘:
             case ‘3‘:
        ................//剩余部分学生自己完成
         }
        }
}                                                    
注意:1.在编程过程中注意及时保存编写内容。
      2.对顺序表的各种操作在运行结果中体现出来。

四、    实验结果

  1. sq_list.h的代码
  2. main.cpp的代码
  3. 运行结果截图(可以有多张)
时间: 2024-08-05 07:08:58

顺序表实验2的相关文章

数据结构实验报告-实验一 顺序表、单链表基本操作的实现

实验一    顺序表.单链表基本操作的实现   l  实验目的 1.顺序表 (1)掌握线性表的基本运算. (2)掌握顺序存储的概念,学会对顺序存储数据结构进行操作. (3)加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力. l  实验内容 1. 顺序表 1.编写线性表基本操作函数: (1)InitList(LIST *L,int ms)初始化线性表: (2)InsertList(LIST *L,int item,int rc)向线性表的指定位置插入元素: (3)DeleteList1

顺序表 基本操作

1 实验1 顺序表基本操作 2 3 实验目的 4 1. 熟悉C语言的上机环境,掌握C语言的基本结构. 5 2. 会定义线性表的顺序存储结构. 6 3. 熟悉对顺序表的一些基本操作和具体的函数定义. 7 注意事项 8 在做第一次“数据结构”课程实验之前,要在硬盘上建立好自己的工作目录,专门来存储你所做的实验程序及相关信息,以后每次做实验都采用这个目录. 9 实验内容 10 该程序的功能是对元素类型为整型的顺序表进行一些操作.该程序包括顺序表结构类型的定义以及对顺序表操作的具体的函数定义和主函数.

顺序表 其他操作

1 实验2 顺序表其它操作 2 实验目的 3 1.进一步掌握在线性表的顺序存储结构上的一些其它操作. 4 实验内容 5 程序1 6 已知一个线性表,用另辟空间和利用原表两种方法把线性表逆置. 7 设计要求:在程序中构造三个子程序分别为 8 SeqList reverse(SeqList A) /*顺序表的就地逆置 */ 9 void ListTraverse(SeqList L) /* 遍历顺序表 */ 10 SeqList create(int n) /* 建立顺序表 */ 11 12 程序2

数据结构第一次作业(学生信息管理系统-顺序表&amp;&amp;链表)

实验目的 : 1 .掌握线性表的定义: 2 .掌握线性表的基本操作,如建立.查找.插入和删除等. 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此学生的学号和成绩: (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩): (5) 给定一个学生信息,插入到表中指定的位置: (6) 删除指定位置的学生记录: (7) 统计表中

数据结构之线性表(顺序表,单链表)——图书管理系统

顺序表: 代码如下: 1 #include<iostream> 2 #include<fstream> 3 #include<string> 4 #include<iomanip> 5 using namespace std; 6 #define OK 1 7 #define ERROR 0 8 #define OVERFLOW -2 9 typedef int Status; 10 typedef int ElemType; 11 12 #define M

顺序表算法设计笔记

1.已知长度为 n 的线性表 A 采用顺序存储结构.设计一个时间复杂度为O(n).空间复杂度为O(1)的算法,该算法删除线性表中所有值为 x 的元素数据元素. 以下两种方法都不满足要求: 如果删除一个值为 x 的元素都进行移动, 其时间复杂度为O(n^2),时间复杂度为O(1). 如果借助一个新的顺序表, 存放将A中所有不为x的元素,其时间复杂度O(n), 空间复杂度为O(n). 解法一:设删除 A 中所有值等于 x 元素后的顺序表为A1, 显然A1包含在 A 中, 为此A1重用 A 的空间.

2、顺序表

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 从这节开始,以后的每一篇博文均会只描述一种结构.这节要解决的是有关顺序表的问题,下面就是一些顺序表的基本的知识点: 1. 顺序表其实就是线性表的一种,它除开始节点和结束节点之外的其他节点,均有且只有一个直接前趋和一个直接后继,开始 节点只有一个后继节点,结束节点只有一个前趋节点. 2. 用顺序存储方法存储的线性表就称为顺序表. 3. 顺序存储方法就是将表的节点按逻辑上的次序依次的存放在一组连续的内存单元中,这里是指在逻辑上连续排列,在

顺序表查找和有序表查找

查找里面顺比表查找和有序表查找(包括二分查找,插值查找,斐波那契查找)比较简单,直接贴代码,代码里面有详细注释. 1 #include <iostream> 2 using namespace std; 3 4 //顺序表查找(线性查找.静态表查找) 时间复杂度为O(n) 5 int Seq_Search(int *s,int n,int key) 6 { 7 s[0] = key; //设置了一个哨兵,避免了每次比较一次过后都要判断查找位置是否越界 8 int i = n; 9 while

线性表---顺序表

线性结构的特点是:在非空的有限集合中,只有唯一的第一个元素和唯一的最后一个元素.第一个元素没有直接前驱元素,最后一个没有直接的后继元素.其它元素都有唯一的前驱元素和唯一的后继元素. 线性表是一种最简单的线性结构.线性表可以用顺序存储结构和链式存储结构存储,可以在线性表的任意位置进行插入和输出操作. 要想将线性表在计算机上实现,必须把其逻辑结构转化为计算机可识别的存储结构.线性表的存储结构主要有两种:顺序存储结构和链式存储结构. 线性表的顺序表示与实现 线性表的顺序存储结构 线性表的顺序存储结构指