顺表类SeqList的使用范例(C++)
/***********************************************顺表类SeqList的使用范例
************************************************/
#include <iostream>
using namespace std; const int MaxSize = 100; //100只是示例性的数据,根据实际问题具体定义
template <class DataType> //定义模板类SeqList
class SeqList
{public:SeqList( ); //无参构造函数,建立空的顺序表SeqList(DataType a[ ], int n); //有参构造函数,建立长度为n的顺序表~SeqList( ); //析构函数int Length( ); //求线性表的长度int Empety();DataType Get(int i); //按位查找,查找第i个元素的值int Locate(DataType x ); //按值查找,查找值为x的元素序号void Insert(int i, DataType x); //插入操作,在第i个位置插入值为x的元素DataType Delete(int i); //删除操作,删除第i个元素void PrintList( ); //遍历操作,按序号依次输出各元素
private:DataType data[MaxSize]; //存放数据元素的数组int length; //线性表的长度
};template<class DataType>
SeqList<DataType> :: ~SeqList()
{}template <class DataType>
SeqList<DataType> :: SeqList()
{length = 0;
}template <class DataType>
int SeqList<DataType> :: Empety()
{if(length == 0)return 1;elsereturn 0;
}template <class DataType>
int SeqList<DataType> :: Length()
{return length;
}template <class DataType>
SeqList<DataType> :: SeqList(DataType a[ ], int n)
{if (n > MaxSize) throw "参数非法";for (int i = 0; i < n; i++) data[i] = a[i];length = n;
}template <class DataType>
void SeqList<DataType> :: PrintList( )
{for (int i = 0; i < length; i++)cout << data[i]; //依次输出线性表的元素值
}template <class DataType>
int SeqList<DataType> :: Locate(DataType x)
{for (int i = 0; i < length; i++)if (data[i] == x) return i+1; //返回其序号i+1return 0; //退出循环,说明查找失败
}template <class DataType>
DataType SeqList<DataType> :: Get(int i)
{if (i < 1 && i > length) throw "查找位置非法";else return data[i - 1];
}template <class DataType>
DataType SeqList<DataType> :: Delete(int i)
{if (length == 0) throw "下溢";if (i < 1 || i > length) throw "位置";int x = data[i - 1]; //取出位置i的元素for (int j = i; j < length; j++)data[j - 1] = data[j]; //此处j已经是元素所在的数组下标length--;return x;
}template <class DataType>
void SeqList<DataType> :: Insert(int i, DataType x)
{if (length >= MaxSize) throw "上溢";if (i < 1 || i > length + 1) throw "位置";for (int j = length; j >= i; j--)data[j] = data[j - 1]; //第j个元素存在数组下标为j-1处data[i - 1] = x;length++;
}int main( )
{int r[5] = {1, 2, 3, 4, 5}, i, x; SeqList<int> L{r, 5}; //建立具有5个元素的顺序表cout << "当前线性表的数据为:";L.PrintList( ); //输出当前线性表1 2 3 4 5try {L.Insert(2, 8); //在第2个位置插入值为8的元素cout << endl << "执行插入操作后数据为:";L.PrintList( ); //输出插入后的线性表1 8 2 3 4 5cout << endl;}catch(char* str){cout << str << "插入操作错误!" << endl;}cout << "当前线性表的长度为:" << L.Length( ); //输出线性表的长度6cout << endl;cout << "请输入查找的元素值:";cin >> x;i = L.Locate(x);if (0 == i) cout << "查找失败" << endl;else cout << "元素" << x << "的位置为:" << i << endl; try{cout << "请输入查找第几个元素值:";cin >> i;cout << "第" << i << "个元素值是" << L.Get(i) << endl;}catch(char* str){cout << "线性表中没有该元素" << endl;} try {cout << "请输入要删除第几个元素:";cin >> i;x = L.Delete(i); //删除第i个元素cout << "删除的元素是" << x <<",删除后数据为:";L.PrintList( ); //输出删除后的线性表}catch(char* str){cout << "删除错误!" << endl;} return 0;
}
顺表类SeqList的使用范例(C++)相关推荐
- 【数据结构】使用Java实现顺序表类 SeqList
目录 线性表介绍 顺序表介绍 Java->顺序表API Java->顺序表代码 使用顺序表示例 线性表介绍 数据结构中的线性存储结构分为两大类:顺序存储和链式存储,顺序存储对应的是顺序表, ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- 顺序表类的声明java_顺序表实现解约瑟夫环_Java
今天我们来使用顺序表类求解约瑟夫(Josephus)环问题. 首先我闲来描述下约瑟夫环问题:古代某法官要裁决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第s个人开始数起,每数到第d个犯人 ...
- 顺序表——基本概念、顺序表类实现、基本操作
顺序表 线性表的顺序存储结构 1.数组是实现顺序存储结构的基础. 特点:地址连续确定,容量固定,随机存取T(n) = O(1) 一维数组占用一块内存空间,数组的存储单元个数成为数组容量,也成为数字长度 ...
- 16 BasicHashTable基本哈希表类(三)——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnblogs.com/oloroso ...
- java设计一个顺序表类的成员函数_顺序表代码讲解以及实现
用C语言编写一个有关顺序表的程序代码 创建一个顺序表,其数据元素类型为整型: 在该顺序表中插入数据(#include #include #define MaxSize 50 typedef char ...
- 映射表类(CMap)
映射表类(CMap)是MFC集合类中的一个模板类,也称作为"字典".CMap是把唯一关键码映射到值的字典收集类,使用CMap可以构造一个关键字和元素值映射的集合类.一旦在映射中插入 ...
- 数据结构入门——顺序表(SeqList)详解(初始化、增、删、查、改)
SeqList顺序表 1. 线性表介绍 2. 顺序表 2.1 顺序表的结构介绍 2.2 顺序表的定义和接口声明--`SeqList.h` 2.3 顺序表接口函数的具体实现--`SeqList.c` 3 ...
- 烈焰mysql数据库_烈焰数据库(MYSQL)的各表类诠释
烈焰数据库(MYSQL)的各表类诠释 以下为烈焰私服数据库各个表的详解 account_data 二进制数据组,不要随意删除或改动 account_forced_permissions 未用到 ach ...
最新文章
- 【VS实践】如何在vs中自动添加注释
- 2020-08-20 将数据上传到 S3 或从S3下载
- 《数学之美》第20章 不要把鸡蛋都放到一个篮子里--谈谈最大熵模型
- LinkedList实现原理
- MATLAB实战系列(四)-导入txt文件技巧大全
- CentOS6.4下安装TeamViewer8
- ie7浏览器传输中文的问题
- IT公司刻板印象合集:程序员都秃头,商务个个是人精
- 人工智能指用计算机,人工智能测试题..doc
- NLP—3.文本特征工程及工具使用举例
- 组装台式计算机的部件,组装台式电脑的配置清单
- Word文档恢复,2大方案教你找回没有保存或者被删除的数据
- 【C语言经典100题】乒乓球队的比赛
- “点亮心灯祝福世界·清明” 活动暨“生与死的艺术沙龙清明特场”启动
- 关于pingpp(招行一网通)-混淆
- c语言题目翻译,c语言专业词汇表达带翻译
- 太高效了,全靠这款可视化报表工具,实用
- promethuesa监控 告警(二)
- 【spark】Cluster deploy mode is not applicable to Spark shells
- 线下门店互动营销产品浅析
热门文章
- 无线射频专题《射频合规,2.4GHz WIFI测试指标详解》
- oracle中fm990.9,国内主要FM电台频率数据.doc
- 阿里云落地北美 誓与亚马逊一争高下?
- c语言套题答案 中国铁道出版社,《C语言程序设计验指导与习题集》练习题的参考答案(中国铁道出版社).doc...
- 学历高 机器学习_高中学历,我接到 BAT 机器学习工程师offer
- 仿闲鱼 拍摄小视频 videorecoder
- 俄罗斯取消封禁 加密聊天软件Telegram
- KMP算法 -- 字符串模式匹配算法
- 中兴王炜:模块化数据中心将替代传统数据中心
- C#开发Word控件