• 顺序表的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. shift()函数

    用于对dataframe中的数整体上移或下移, 当为正数时,向下移. 当为负数时,向上移. 缺少的会填充NaN 参考: https://blog.csdn.net/kizgel/article/det ...

  2. Reinforcement Learning Index Page

    Reinforcement Learning Posts Step-by-step from Markov Property to Markov Decision Process Markov Dec ...

  3. js json中的时间转换格式

    //根据json中的日期格式,转换成yyyy-mm-dd HH:mm:ss function ChangeDateFormat(cellval) { var date = new Date(parse ...

  4. xshell输入字母空格间距变大

    按一下shift+空格(全角/半角转换的快捷键,引起的问题)

  5. Spring MVC-学习笔记(1)认识spring mvc

    1.基于XML Schema.Controller接口的spring mvc简单例子 1>创建一个动态Web项目,选择同时创建web.xml文件 2>在WEB-INF/lib中粘贴spri ...

  6. java jdk12,安装路径没有jre文件夹

    (平台备注:win10系统,自测) 1.造成原因:JDK11之后没有直接的jre,要用户选择jre模块 2.如果需要,执行以下步骤可生成: 2.1 进入jdk安装目录下, 2.2 点击shift+右键 ...

  7. java 中的引用类型

    GC基本原理 GC (Garbage Collection)的基本原理:将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征 ...

  8. 使用Python和AWK两种方式实现文本处理的长拼接案例

    最近由于业务系统新需求的需要,我们平台需要将供应商G提供一类数据转换格式后提供给客户K.比较头疼是供应商G提供的数据都是在Windows下使用Excel存储的,而客户K先前与我们相关对接人员商定的数据 ...

  9. 01. Linux-Kali系统网卡配置

    配置网卡操作: vim /etc/network/interfaces auto eth0iface eth0 inet static 配置eth0使用默认的静态地址address 192.168.1 ...

  10. Object中有哪些公用方法?

    clone()方法 实现对象的浅复制,只有实现了Cloneable接口才能调用该方法. toString()方法 返回该对象的字符串表示. equals()方法: 在Object中与“==”的定义是一 ...