将线性表的抽象数据类型定义在顺序表存储结构下用C++的类实现,由于线性表的数据元素类型不确定,所以采用模板机制。

 头文件seqlist.h
#pragma once
#include <iostream>
const int MaxSize = ;
template<class T>// 定义模板类
class SeqList
{
public: SeqList() { Length = ; }; // 无参构造函数,建立一个空的顺序表
SeqList(T a[], int n); // 有参构造函数,建立一个长度为n的顺序表
~SeqList() {}; // 空的析构函数
int leng() { return Length; } // 求线性表的长度
T get(int i); // 按位查找第i个元素
int locate(T x); // 按值查找值为x的元素序号
void insert(int i, T x); // 在第i个位置插入值为x的元素
T Delete(int i); // 删除第i个元素
void printlist(); // 打印线性表 private:
T data[MaxSize];
int Length; }; #pragma region 成员函数定义 template<class T>
inline SeqList<T>::SeqList(T a[], int n)
{
if (n > MaxSize)throw"参数非法";
for (int i = ; i < n; i++)
data[i] = a[i];
Length = n;
} template<class T>
T SeqList<T>::get(int i)
{
if (i< || i>Length)throw"查找位置非法";
else return data[i - ];
} template<class T>
int SeqList<T>::locate(T x)
{
for (int i = ; i < Length; i++)
{
if (data[i] == x)
return i + ;
}
return ;
} template<class T>
void SeqList<T>::insert(int i, T x)
{
if (Length >= MaxSize)throw "上溢";
if (i< || i>Length + )throw "插入位置非法"; for (int j = Length; j >= i; j--)
data[j] = data[j - ];
data[i-] = x;
Length++;
} template<class T>
T SeqList<T>::Delete(int i)
{
if (Length == )throw"下溢";
if (i< || i>Length)throw"位置非法";
T x = data[i - ];
for (int j = i; j < Length; j++)
data[j - ] = data[j];
Length--;
return x;
} template<class T>
void SeqList<T>::printlist()
{
for (int i = ; i < Length; i++)
cout << data[i] << endl; }
主函数
#include "seqlist.h"
using namespace std;
int main()
{
int arry[] = { , , , , , , , , , };
// 三种创建类对象的方法
SeqList<int> seqlist;
SeqList<int> seqlist1(arry,);
SeqList<int>* seqlist2 = new SeqList<int>(arry, );
cout << seqlist1.get() << endl;
cout << seqlist2->get() << endl;
cout << seqlist1.locate() <<endl;
cout << seqlist2->locate() << endl;
seqlist1.insert(, );
seqlist2->insert(, );
seqlist1.Delete();
seqlist2->Delete();
seqlist1.printlist();
seqlist2->printlist(); system("pause");
return ;
}

C++实现线性表的顺序存储结构的更多相关文章

  1. 2.2_线性表的顺序存储结构_参考集合ArrayList

    [线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...

  2. 线性表的顺序存储结构——java

    线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...

  3. C++编程练习(1)----“实现简单的线性表的顺序存储结构“

    线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include< ...

  4. 线性表的顺序存储结构之顺序表类的实现_Java

    在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...

  5. 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现

    逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...

  6. c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)

    线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...

  7. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  8. c语言数据结构之线性表的顺序存储结构

    线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...

  9. 【Java】 大话数据结构(1) 线性表之顺序存储结构

     本文根据<大话数据结构>一书,实现了Java版的顺序存储结构. 顺序存储结构指的是用一段地址连续的存储单元一次存储线性表的数据元素,一般用一维数组来实现. 书中的线性表抽象数据类型定义如 ...

  10. 线性表 linear_list 顺序存储结构

    可以把线性表看作一串珠子 序列:指其中的元素是有序的 注意last和length变量的内在关系 注意:将元素所占的空间和表长合并为C语言的一个结构类型 静态分配的方式,分配给一个固定大小的存储空间之后 ...

随机推荐

  1. Google Map API抓取地图坐标信息小程序

    因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...

  2. 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 && 一般的浏览器input和button的高度不一致问题

    解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 如果我们把一个表单设置位 autofocus ,这时这个表单在获取焦点后就会产生淡黄色的背景,我们就是使用!importa ...

  3. springboot 上传图片与回显

    在网上找了很多例子,不能完全契合自己的需求,自行整理了下.需求是这样的:项目小,所以不需要单独的图片服务器,图片保存在服务器中任意的地方,并且可以通过访问服务器来获取图片.话不多说上代码: 1.依赖 ...

  4. 我的Python升级打怪之路【一】:python的简单认识

    Python的简介 Python与其他语言的对比: C和Python.Java.C# C语言:代码直接编译成了机器码,在处理器上直接执行 Python.Java.C#:编译得到相应的字节码,虚拟机执行 ...

  5. 【ExtJS】FormPanel表单验证

    在Extjs中,FormPane表单提供了各种各样的验证. 在表单验证前需要在onReady的function({})内添加以下代码: Ext.QuickTips.init();    //为组件提供 ...

  6. [转]微信小程序开发踩坑记录

    本文转自:http://www.cnblogs.com/NKnife/p/6283605.html 1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app. ...

  7. 使用 Python 管理 Azure:基础配置

    Azure 提供了丰富的 Python SDK 来对 Azure 进行开发管理,包括使用 Azure 的开源框架在 Azure 上创建 web 应用程序,对 Azure 的虚拟机,存储等进行管理,本系 ...

  8. 从代理模式到Spring AOP

    什么是代理模式 假如我喜欢上隔壁班的翠花,但是我没胆量向她送花,这时候我需要一个铁杆哥们帮我做这件事, 很明显这哥们是个代理,是去执行任务的,但是花实际上是我"送"的,代理和我一样 ...

  9. node版本管理nvm使用

    nvm:Node Version Manager,用来管理node版本,可以在一台机器上来回切换node版本,比较方便. win下建议使用 nvm-windows nodist linux下直接使用n ...

  10. 在 Azure 上创建和链接 Azure SQL 数据库

    本快速入门介绍了如何在 Azure 门户中创建并连接 Azure SQL 数据库.在本教程中完成的所有操作均符合 1 元试用条件. 开始之前 如果您还没有 Azure 账户,可以申请 1 元试用账户. ...