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语言的一个结构类型 静态分配的方式,分配给一个固定大小的存储空间之后 ...
随机推荐
- ubuntu 16 .04常见指令整理
删除类指令 sudo rm -rf 文件名 //该指令为直接删除指令 -------------------------------------------------------------- ...
- Delphi对Word一些进阶操作
利用VBA 编程,可以使许多日常的任务自动完成,使用户的工作更有效率. 1.在启动时显示打开对话框 一般情况下启动Word,Word 会认为是创建一个新文档.如果只是想打开一个旧文档进行编辑,在Wor ...
- android viewpager 拿到当前显示的 fragment 的实例
一个 ViewPager 通过 FragmentPagerAdapter 绑定了 3 个 fragment 可以通过 Fragment fragment = getSupportFragmentMan ...
- 008-PageBean类模板
1 PageBean模板一 package ${enclosing_package}; import java.util.ArrayList; import java.util.List; publi ...
- unity调用ios原生代码objective-c和回调
从c#到objective-c学习 https://www.runoob.com/w3cnote/objective-c-tutorial.html https://www.jianshu.com/p ...
- Python读取文件编码及内容
Python读取文件编码及内容 最近做一个项目,需要读取文件内容,但是文件的编码方式有可能都不一样.有的使用GBK,有的使用UTF8.所以在不正确读取的时候会出现如下错误: UnicodeDecode ...
- 【.Net】 C#参数数组与函数重载
static int ParamsFunc(int i, string s) { return i; } static int ParamsFunc(int i, string s, params i ...
- Javascript替代eval方法
Javascript替代eval方法 通常我们在使用ajax获取到后台返回的json数据时,都要使用 eval 这个方法将json字符串转换成对象数组, 像这样: obj = eval('('+dat ...
- ASP.NET Core项目中新增和删除的内容
最新一版的.NET几经改名,最终得到了.NET Core这个高大上的名称,相应的ASP.NET MVC也跟着提供了ASP.NET Core MVC版本. 在.NET Core没有稳定名称时,叫做MVC ...
- bzoj 3512: DZY Loves Math IV
Description 给定n,m,求 模10^9+7的值. Solution 设 \(S(n,m)\) 表示 \(\sum_{i=1}^{m}\phi(n*i)\) \(Ans=\sum_{i=1} ...