• 顺序表的C++语言描述

  • 基本运算的算法——置空表、求表的长度、取结点、定位运算、插入运算、删除运算、建立顺序表、输出顺序表

#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
template <class T>
class Linklist
{
public:
Linklist()
{

}
int initLinklist(Linklist < T > & L,int maxlistsize = 100);//初始化大小为100
int Getlength(Linklist < T > & L);
int Getmaxsize(Linklist < T > & L);
int DestroyList(Linklist < T > & L);
~Linklist() //销毁函数
{
cout<<"DestroyList"<<endl;
};
int ClearList(Linklist < T > & L);
void ShowList(Linklist < T > & L);
bool GetElem(Linklist < T > & L , int i , T &e);//获得第i个元素,e必须是T类型的,例如int e
T LocateElem(Linklist < T > & L , T & e);//找到e个元素的位置
T InsertElem(Linklist < T > & L , int i , T &e);//插入
int length;
int maxsize;
int *elem;
};

template<class T>
int Linklist<T>::initLinklist( Linklist &L,int maxlistsize)//创建新顺式表
{
L.maxsize = maxlistsize;
L.length = 0;
elem = new T [maxlistsize] ;
if(!L.elem)return -1;
else return 1;
}

template<class T>
int Linklist<T>::Getlength( Linklist &L)
{
cout<<L.length<<endl;
}

template<class T>
int Linklist<T>::Getmaxsize( Linklist &L)
{
cout<<L.maxsize<<endl;
}

template<class T>
int Linklist<T>::DestroyList(Linklist <T> &L) //销毁顺式表
{
L.~Linklist();
}

template <class T>
int Linklist<T>::ClearList(Linklist < T > &L) //清空顺式表
{
L.length = 0;
if(L.length == 0)
{
cout<<"Clear OK"<<endl;
return 1;
}
else
{
cout<<"Clear ERROR"<<endl;
return 0;
}
}

template <class T>
void Linklist <T>::ShowList(Linklist <T> &L)
{
for(int i = 0 ; i<length ; i ++)
cout<<L.elem[i]<<" ";
cout<<endl;
}

template <class T>
bool Linklist <T>::GetElem(Linklist <T> &L, int i ,T & e)
{
if(i<1||i>length - 1)
{
cout<<"i input error"<<endl;
return false;
}
if(e = L.elem[i-1])
return true;
else return false;

}

template <class T>
T Linklist <T>::LocateElem (Linklist <T> &L , T & e)
{
for(int i = 0 ; i < L.length ; i ++)
{
if( L.elem[i] == e)
{
return i;
break;
}
}
return -1;
}

template <class T>
T Linklist<T>::InsertElem(Linklist <T> &L , int i , T & e)
{
if(i<1||i>L.length)return ERROR;
for(int j = L.length ; j >i ; j--)
{
L.elem[j] = L.elem[j-1];
}
L.elem[i-1] = e;
L.length ++;
return 1;
}
int main()
{
Linklist<int> L;
L.initLinklist(L,100);

}

顺序表 C++ 类模板实现的更多相关文章

  1. 线性表之顺序表C++实现

    线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...

  2. 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表

    ---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...

  3. Java——数据结构(顺序表)

    这是一个顺序表的类,初始化的时候就已经确定了表的长度,之后不能添加数据,因为使用的是数组存储的数据,不过这个表的类型是泛型的. public class List { private Object[] ...

  4. C++入门经典-例9.3-类模板,简单类模板

    1:使用template关键字不但可以定义函数模板,而且可以定义类模板.类模板代表一族类,它是用来描述通用数据类型或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意数据类型.类 ...

  5. C++ 模板常见特性(函数模板、类模板)

    背景 C++ 是很强大,有各种特性来提高代码的可重用性,有助于减少开发的代码量和工作量. C++ 提高代码的可重用性主要有两方面: 继承 模板 继承的特性我已在前面篇章写过了,本篇主要是说明「模板」的 ...

  6. C++语言实现顺序表

    C++语言实现顺序表 顺序表的定义及其特点 顺序表的定义是:把线性表中的所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块连续的存储空间中. 这样,线性表中第一个表项的存储位置就是被 ...

  7. C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现

    前面介绍的模板有关知识大部分都是用顺序表来举例的,现在我们就专门用模板来实现顺序表,其中的很多操作都和之前没有多大区别,只是有几个比较重要的知识点需要做专门的详解. #pragma once #inc ...

  8. C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

    摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动 ...

  9. C++顺序表(模板总结)

    C++顺序表(模板总结) 总结: 1.模板类的实质是什么:让程序员写出和类型无关的代码 2.模板的对象时什么:方法或者类 3.是对类中的一系列操作,提供一个不固定数据类型的方法 用模板做的类的时候要指 ...

随机推荐

  1. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第1节 基础加强_4_Junit_@Before&@After

    为了演示输出一段话 测试add的方法 虽然报错了 但是打印的结果还是输出

  2. 测开之路九十四:css之盒子模型

    盒子模型 为了演示方便,把内容放到盒子里面 引用css 演示内容 外边距: 4个方向分开写 简写为一条指令,顺序为上右下左 简写为一条指令,第一个值为上下,第二个值为左右 简写为一条指令,只有一个值时 ...

  3. linux中cut命令

    cut命令 cut常用参数 cut命令用来显示行中的指定部分,删除文件中指定字段. 说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上 ...

  4. [Python3] 013 集合:你不能两次进入同一个集合

    目录 0. 集合的独白 1. 集合的创建 2. 集合的特性 (1) 概述 (2) 少废话,上例子 3. 集合的遍历 4. 集合内涵 5. 集合的内置方法 6. 可供集合使用的一些方法/函数 (1) 又 ...

  5. body传参?parameter传参?Request Payload?Query String Parameter?

    今天,是有委屈的一天:今天,是有小情绪的一天.所以,我们要对今天进行小结,跟它做一个了断! 今天,后端来一个接口,告诉我"要用post请求,parameter形式传参".over. ...

  6. Linux 修改hostname几种方式

    1:  hostname DB-Server          --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改 2:  echo DB-Server  > /proc/sys ...

  7. 帝国CMS 调用专题[eshowzt]标签改为灵动标签[e:loop]的方法

    1.eshowzt说明及示例 [eshowzt]标签模板ID,专题类别ID,显示专题数[/eshowzt] 示例需求:将推荐专题后,显示9个指定专题 原来写法: <span>[eshowz ...

  8. idea 创建java web项目ssm-gradle

    环境准备:jdk1.8+tomcat8+idea+gradle 1.创建项目SSM 使用gradle创建项目,按照提示如下   image.png 输入项目名称,组名   image.png   im ...

  9. 如何设置移动端的tab栏

    这是添加tab栏的代码: {                     "id": "tabBar1",                     "st ...

  10. Anaconda 安装及Python 多版本间切换

    安装 Anaconda 安装anaconda 安装较为简单,这里参考官方文档:https://docs.continuum.io/anaconda/install/linux.html 在文件目录下执 ...