顺序表 C++模板实现
#include <iostream>
using namespace std; template <typename T>
class list{
private:
int maxLen; //顺序表能允许的最大长度
int num; //当前表中的元素个数
T *data; //保存T类型数组首地址
public:
list(int max); //构造函数
~list(); //析构函数
void add(const T x); //在最后一个元素后增加一个元素x
void insert(int i , T x); //在下标为i的元素处增加一个元素x
void dele(int i); //删除下标为i的元素
void set(int i, T x); //设置下标为i的元素的值
int locate(T x); //查找第一个与x相同元素的下标
T get(int i); //返回下标为i的元素
void printAll(); //打印整个顺序表
}; //构造函数实现
template <typename T>
list<T>::list(int max){
maxLen = max; //顺序表最大长度
data = new T[maxLen]; //动态数组
num=0;
} //析构函数实现
template <typename T>
list<T>::~list(){
delete [] data; //释放动态数组
} //在最后一个元素后增加一个元素x,实现部分
template <typename T>
void list<T>::add(T x){
data[num]= x;
num++;
} //在下标为i的元素处增加一个元素x,实现部分
template <typename T>
void list<T>::insert(int i ,T x){
if(i<0 && i>num-1){ //判断插入位置是否介于下标0与num-1之间
cerr<<"插入位置有误"<<endl;
exit(1);
}
else if(num == maxLen){ //判断表是否满了
cerr<<"顺序表已满,无法插入" <<endl;
exit(1);
}
int j = num;
while(j>i){
data[j] = data[j-1];
j--;
}
data[i] = x;
num++;
} //删除下标为i的元素,实现部分
template <typename T>
void list<T>::dele(int i){
if(i<0 && i>num-1){ //判断删除位置是否介于下标0与num-1之间
cerr<<"删除位置有误"<<endl;
exit(1);
}
int j = i+1;
while(j<num){
data[j-1] = data[j];
j++;
}
num--;
} //设置下标为i的元素的值,实现部分
template <typename T>
void list<T>::set(int i , T x){
data[i] = x;
} //查找第一个与x相同元素的下标,实现部分
template <typename T>
int list<T>::locate(T x) {
for(int i = 0 ; i < num ; i++){
if(data[i] == x)
return i;
}
return -1;
} //返回下标为i的元素,实现部分
template <typename T>
T list<T>::get(int i){
return data[i];
} //打印整个顺序表,实现部分
template <typename T>
void list<T>::printAll(){
for(int i = 0 ; i <num ; i++){
cout<<data[i]<<endl;
}
}
void main(){
list<int> a(10); //创建元素类型为int,最大长度为10的顺序表
a.add(1); //增加一个元素,元素值为1
a.add(2); //增加一个元素,元素值为2
a.add(3); //增加一个元素,元素值为3
a.add(4); //增加一个元素,元素值为4
a.add(5); //增加一个元素,元素值为5
a.insert(4,0); //在下表为4的元素,插入一个值为0的元素
a.dele(4); //删除上次插入的元素
a.set(0,9); //设置下标为0的元素的值为9
a.printAll(); //打印所有元素的值
}
顺序表 C++模板实现的更多相关文章
- C++顺序表(模板总结)
C++顺序表(模板总结) 总结: 1.模板类的实质是什么:让程序员写出和类型无关的代码 2.模板的对象时什么:方法或者类 3.是对类中的一系列操作,提供一个不固定数据类型的方法 用模板做的类的时候要指 ...
- 数据结构:DHU顺序表ADT模板设计及简单应用:找匹配
顺序表ADT模板设计及简单应用:找匹配 时间限制: 1S类别: DS:线性表->线性表应用 问题描述: 输入范例: 100000100000 99999 99998 99997 99996 99 ...
- C++利用动态数组实现顺序表(不限数据类型)
通过类模板实现顺序表时,若进行比较和遍历操作,模板元素可以通过STL中的equal_to仿函数实现,或者通过回调函数实现.若进行复制操作,可以采用STL的算法函数,也可以通过操作地址实现.关于回调函数 ...
- C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现
前面介绍的模板有关知识大部分都是用顺序表来举例的,现在我们就专门用模板来实现顺序表,其中的很多操作都和之前没有多大区别,只是有几个比较重要的知识点需要做专门的详解. #pragma once #inc ...
- C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用
摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...
- C++基于模板顺序表的实现(带排序)
说明:代码是可以运行的,但是发表在博客上后复制到编译器里面报N多错误,找了半天原因是网页里面生成了一些空白字符,这些字符编译器无法识别. 因此使用了2种插入格式插入代码. 第二个带注释解释的代码不可复 ...
- 顺序表 C++ 类模板实现
顺序表的C++语言描述 基本运算的算法——置空表.求表的长度.取结点.定位运算.插入运算.删除运算.建立顺序表.输出顺序表 #include <iostream>using namespa ...
- c++顺序表基本功能
头文件 #define LIST_MAX_SIZE 5#define LISTINCREMENT 2#include<assert.h>#include<string>temp ...
- 顺序表及其多种实现方式 --- C/C++
所谓顺序表,即线性表的顺序存储结构.下面给出的是数据结构---线性表的定义. ADT List{ 数据对象: 线性表的数据对象的集合为{a1,a2,a3,...,an},每个元素的类型为ElemTyp ...
随机推荐
- 什么是IDOC,以及IDOC的步骤
创建IDOC: 第一步:WE31 创建IDOC所包含的字段. 第二步:WE30 创建IDOC 把Segment分配给IDOC 第三步:WE81 创建信息类型 第四步:WE82 把 ...
- C++如何用system命令获取文件夹下所有文件名
http://www.cplusplus.com/reference/cstdlib/system/ http://bbs.csdn.net/topics/30068943 #include < ...
- Porsche Piwis Tester II “No VCI has been detected”,how to do?
Hi,Joy, I am sorry that my Porsche Piwis Tester II from your shop said “No VCI has been detected” wh ...
- (转)CentOS 6.5下Redis安装详细步骤
Redis简介:Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作 ...
- 自定义异常以及runtime类
一.自定义异常: 1.自定义异常的概念:在java编程中,我们会遇到很多问题,但是这些问题异常,java并没有给我们定义好,那么我们就要自己定义这些异常,这就是自定义异常: 2.throws 是声明异 ...
- show status详解
Aborted_clients 某种原因客户程序不能正常关闭连接而导致失败的连接的数量.没有正常关闭 Aborted_connects 指出试图连接到MYSQL的失败的次数.这种情况在客户尝试用错误的 ...
- [转]div里table居中的问题 Div与body顶部间隙
本文转自:http://www.cnblogs.com/jinhui/archive/2008/09/24/1297729.html 将div的text-align设为center,然后将table的 ...
- map 树木品种
树木品种 TimeLimit: 1 Second MemoryLimit: 32 Megabyte Totalsubmit: 517 Accepted: 120 Description 硬木是 ...
- SSRS中加入书签功能及数据集窗口
SSRS在使用过程中,是比较好用的,但如果报表过长,则会比较难看到想看的内容,在SSRS中有书签功能,可以将报表直接直接跳转至书签位置,这样用户可以比较精准的定位到关注位置.使用一个文本框或是图片,再 ...
- java web和asp.net哪个做网站好
asp.net上手容易但是精通困难,因为微软把控件都封装好,你只管用就行了,但是想学习它的原理很困难,asp.net一般适合快速开发一个项目.java web上手困难但比较容易学的深入,因为所有的东西 ...