• 顺序表的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. jmeter之自动重定向和跟随重定向用法

    jmeter工具里面有自动重定向和跟随重定向这2种选择,那么他们到底有啥区别呢? 目录 1.自动重定向和跟随重定向 2.举个例子 1.自动重定向和跟随重定向 01.3XX的请求一般要使用跟随重定向,2 ...

  2. 45 MySQL自增id

    45 MySQL自增id 表定义自增id 说到自增id,前面提到mysql的自增id不连续,当表定义的自增值达到上限后的逻辑是:再申请下一个id时,得到的值保持不变 ; insert into t v ...

  3. 转:高效实用的.NET开源项目

    本文转自:http://www.cnblogs.com/pengze0902/p/7669631.html 似乎...很久很久没有写博客了,一直都想写两篇,但是却没有时间写.感觉最近有很多事情需要处理 ...

  4. IDEA-包层级结构显示(三)

    IntelliJ IDEA包层级结构显示 如:A.B.C,在项目中希望以如下形式显示: A B C 效果: 再更换为A.B.C形式显示

  5. Linux的简介安装与简单使用

    一: 适合初学者的最佳Linux发行版:Linux Mint 老旧硬件的最佳Linux发行版:Ubuntu MATE 安全行业的最佳Linux发行版:Kali Linux 专属游戏的Linux发行版: ...

  6. 一次特殊的“VARCHAR转numeric失败”错误记录

    今天接触到一个很有意思的问题.当我在执行一条INSERT的sql语句时,他总是报字符串转数字类型失败. 问题 首先,该表中的所有数字类型的字段都是非必填,其次,每个数字类型的字段都有默认值.最令我感到 ...

  7. NFS实现文件共享

    NFS(Network Files System)即网络文件系统,NFS文件系统协议允许网络中的主机通过TCP/IP协议进行资源共享,NFS客户端可以像使用本地资源一样读写远端NFS服务端的资料,需要 ...

  8. python工程的结构

    1 python系统库的位置 大部分系统库在/usr/lib64/python2.7目录下,但是像sys模块,是python内置的库,是用c实现的,直接连接进了python.exe中了. 也就是说,在 ...

  9. 【译】Redux 还是 Mobx,让我来解决你的困惑!

    原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用了 Redux,但我最近都在使用 Mob ...

  10. 最长回文子序列/最长回文子串(DP,马拉车)

    字符子串和字符子序列的区别 字符字串指的是字符串中连续的n个字符:如palindrome中,pa,alind,drome等都属于它的字串 而字符子序列指的是字符串中不一定连续但先后顺序一致的n个字符: ...