顺序表 C++ 类模板实现

  • 顺序表的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);

}

时间: 2024-10-10 08:38:20

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

[数据结构]线性表之顺序表的类模板实现

LinearList.h抽象基类: #ifndef LINEARLIST #define LINEARLIST //线性表的抽象基类 template<class T> class LinearList { public: LinearList(){};//如果派生类不需要向基类构造函数传递参数,则就会调用基类默认构造函数,所以,要么不写,要么就自己写默认构造函数. ~LinearList(){};//派生类也会调用基类的析构函数. virtual int Size()const=0; vir

C++数据结构 顺序表的实现(模板类的实现)

利用模板类实现顺序表的操作 实现的功能: 1.尾插,2.头插,3.显示,4.尾删,5.头删,6.按位置,7.插按值插,8.按位置删,9.按值删,10.按值查,11.求表长,12.清除数据,13.摧毁该顺序表,14.反转,15.排序(冒泡排序,快速排序). 头文件源代码: #pragma once // 防止重复编译 #include<iostream> using namespace std; template<class Type> class SeqList { public:

[数据结构]栈之顺序栈的类模板实现

栈的数组实现形式,采用动态分配数组,不够时可以调整栈的大小. Stack.h文件:主要定义栈的抽象基类,提供公共的接口函数. #ifndef STACK #define STACK //栈的抽象基类 template<class T> class Stack { public: Stack(){} ~Stack(){} virtual void Push(const T& x)=0; virtual bool Pop(T& x)=0; virtual bool getTop(T

[数据结构]队列之顺序队列的类模板实现

队列是一种限定存取位置的线性表.同意插入的一端叫做队尾(rear),同意删除的一端叫做队首(front). 队列具有FIFO的性质 队列的存储表示也有两种方式:基于数组的,基于列表的.基于数组的叫做顺序队列.基于列表的叫做链式队列. 一下是基于动态数组的顺序队列的模板类的实现. 顺序队列的抽象基类例如以下所看到的:仅仅提供了接口和显式的默认构造函数和析构函数,在派生类中调用. #ifndef QUEUE #define QUEUE //队列的抽象基类 template<class T> cla

c++ 模板实现顺序表

 /************************************           WZ ASUST   2016          顺序表 第二个模板 ************************************/ #include"wz.h" #include"sts.h" template <typename T> class seqlist { public: seqlist() :_data(NULL) ,_size(

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

线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件#include<iostream> const int MaxSize = 100;//定义顺序表SeqList的模板类template<class DataType>class SeqList{public: //顺序表无参构造器(创建一个空的顺序表) SeqList(){ length = 0 } //顺序表有参构造器(创建一个长度为n的顺序表) SeqList(DataType array[], int

函数、类模板

泛型程序设计 算法实现时不指定具体要操作的数据的类型.适用于多种数据结构. 函数模板 Template <class 类型参数1,class类型参数2,…..> 返回值类型 模板名(形参表) { 函数体: } 函数模板可以重载,只要它们的形参表不同即可. C++编译器遵循以下优先顺序: 先找参数完全匹配的普通函数(非由模板实例化而得的函数) 再找参数完全匹配的模板函数 再找实参经过自动类型转换后能匹配的普通函数 上面的都不符合则报错. 可以在函数模板中使用多个类型参数,可以避免二义性. #in

java数据结构与算法之顺序表与链表深入分析

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 ??数据结构与算法这门学科虽然在大学期间就已学习过了,但是到现在确实也忘了不少,因此最近又重新看了本书-<数据结构与算法分析>加上之前看的<java数据结构>也算是对数据结构的进一步深入学习了,于是也就打算

基础数据结构-线性表-顺序表的合并操作

因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言. 顺序表的合并操作 题目描述建立顺序表的类,属性包括:数组.实际长度.最大长度(设定为1000) 已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序输入第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等 第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等输出顺序表内容包括顺序表的实际长度和数