C++实现线性表的顺序存储结构
将线性表的抽象数据类型定义在顺序表存储结构下用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++实现线性表的顺序存储结构的更多相关文章
- 2.2_线性表的顺序存储结构_参考集合ArrayList
[线性表的顺序存储从结构] 指的是用一段连续的存储单元一次储存线性表的数据元素. [线性表的顺序存储的结构代码 C语言版] #define MAXSIZE 20 /*存储空间初始分配量*/ typed ...
- 线性表的顺序存储结构——java
线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...
- C++编程练习(1)----“实现简单的线性表的顺序存储结构“
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素. 故可以用数组来实现顺序存储结构. 用C++编写的利用数组实现简单的读取.插入和删除功能的线性表. #include< ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文——线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构——顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- 数据结构4:顺序表(线性表的顺序存储结构)及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为线性表的顺序存储结构. 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中,之间 ...
- c数据结构 -- 线性表之 顺序存储结构 于 链式存储结构 (单链表)
线性表 定义:线性表是具有相同特性的数据元素的一个有限序列 类型: 1:顺序存储结构 定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构 算法: #include <stdio. ...
- 线性表之顺序存储结构(C语言动态数组实现)
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...
- c语言数据结构之线性表的顺序存储结构
线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...
- 【Java】 大话数据结构(1) 线性表之顺序存储结构
本文根据<大话数据结构>一书,实现了Java版的顺序存储结构. 顺序存储结构指的是用一段地址连续的存储单元一次存储线性表的数据元素,一般用一维数组来实现. 书中的线性表抽象数据类型定义如 ...
- 线性表 linear_list 顺序存储结构
可以把线性表看作一串珠子 序列:指其中的元素是有序的 注意last和length变量的内在关系 注意:将元素所占的空间和表长合并为C语言的一个结构类型 静态分配的方式,分配给一个固定大小的存储空间之后 ...
随机推荐
- 3dsmax2016卸载/安装失败/如何彻底卸载清除干净3dsmax2016注册表和文件的方法
3dsmax2016提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2016失败提示3dsmax2016安装未完成,某些产品无法安装,也有时候想重新 ...
- VirtualBox 命令行操作
vboxmanage list vmsvboxmanage list runningvmsvboxmanage startvmvboxmanage controlvm "RHEL6.1_fo ...
- LinuxShell脚本编程基础1-vi编辑器的使用
1.输入模式与命令模式的切换 按 [Esc]键 切换到 命令模式: 2.保存与退出 :w mytest.txt 保存文件名 :q 退出 :q! 强制退出 :wq 保存并退出 3.插入文本命令 i 在 ...
- 通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
激活条件编译支持. @cc_on 备注 @cc_on 语句激活脚本引擎中的条件编译. 强烈推荐在注释中使用 @cc_on 语句,以使不支持条件编译的浏览器将您的脚本视为有效语法而接受它: /*@cc_ ...
- CSS的margin属性:详解margin属性
在网上看到的一篇文章,说的比较全面.原文地址:http://www.poluoluo.com/jzxy/201206/167007.html 你真的了解margin吗? 你知道margin有什么特性吗 ...
- MySql的存储引擎介绍
下面主要介绍InnoDB.MyISAM和MEMEORY三种存储引擎. InnoDB存储引擎 InnoDB遵循CNU通用公开许可(GPL)发行.InnoDB已经被一些重量级互联网公司所采用,如雅虎.Sl ...
- 架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)
接下来我们将整合mybatisplus+Oracle,实现一个简单的查询.(期间踩了很多坑,遇到一些问题,还好慢慢解决了.现在是通过配置文件的方式来进行dubbo服务的注册和发布,希望以后能在学习和实 ...
- SEO 小技巧汇总
一.为了提高搜索点击率,还可以 1.为了增加关键词的密度,将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样). 2.在图象的alt注释语句中加入关键字. 如:<IMG SRC=" ...
- UML关系
UML关系详解 1.关联关系(association) 连接模型元素及链接实例,用一条实线来表示 2.依赖关系(dependency) 表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示 ...
- Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效
当我们在进行Silverlight & Blend进行动画设计的过程中,可能需要设计出很多效果不一的图形图像出来作为动画的基本组成元素.然而在设计过程中可能会出现许多的问题,比如当前绘制了一个 ...