• 顺序表的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. 小程序-web-view嵌入H5页面遇到的bug

    遇到的问题1:ios页面中,内容过多时有下滑真是功能,但是下滑的时候回看到底部的微信自带的灰色背景及H5的域名(ios的webview中上/下拉露出黑灰色背景问题) 解决办法:给body添加样式--- ...

  2. day16模块,导入模板完成的三件事,起别名,模块的分类,模块的加载顺序,环境变量,from...import语法导入,from...import *,链式导入,循环导入

    复习 ''' 1.生成器中的send方法 -- 给当前停止的yield发生信息 -- 内部调用__next__()取到下一个yield的返回值 2.递归:函数的(直接,间接)自调用 -- 回溯 与 递 ...

  3. 20191105 《Spring5高级编程》笔记-第6章

    第6章 Spring JDBC支持 Spring官方: 位于Spring Framework Project下. 文档: https://docs.spring.io/spring-framework ...

  4. 管理MySQL 从入门到出门

    MySQL 中的数据库(Database)就像是一个容器,其中包含了各种对象.例如,数据表(Table).视图(View).存储过程(Stored Procedure)以及触发器(Trigger)等. ...

  5. JVM可视化监控工具jconsole以及jvisualvm的配置

    使用jdk自带的jconsole.jvisualvm插件,监控远程linux服务器中tomcat的jvm情况 (jconsole.jvisualvm插件可查看堆内存变化情况,线程状态,CPU使用情况, ...

  6. [2019杭电多校第五场][hdu6628]permutation 1

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6628 题意为求字典序第k小的差异数组,差异数组p满足p[i]=a[i+1]-a[i]. 头铁的爆搜,因 ...

  7. 使用ssh协议在linux主机之间快速上传和下载文件

    scp 要上传的文件 上传主机用户名@主机地址:要上传的主机目录 例如: scp *20181111*.gz inas@10.2.13.57:/INAS/dsgbak/20181110 表示将当前目录 ...

  8. python学习笔记(8):

    一.变量和类型 1.Python基本变量类型: 整数 ,浮点数 ,字符串, 布尔值 ,空值 ,函数, 模块, 类型, 自定义类型 2.变量定义 :变量存储在内存中的值.这就意味着在创建变量时会在内存中 ...

  9. 第一个progressive web application,发车!

    progressive web application是谷歌推出的一种渐进式web应用,通过利用service-worker等来达到类似于原生应用,而且在chrome浏览器还可以添加到主页,完全就和一 ...

  10. HTML5中的Web Worker

    什么是 Web Worker? 当在 HTML 页面中执行脚本时,页面是不可响应的,直到脚本已完成. Web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能.您 ...