用c++模板实现 线性表(数组表示)
2009-03-06 14:59
771 查看
#include <iostream>
#include <string>
using namespace std;
template <typename T> class LinearList{
public:
LinearList();
LinearList(int num);
T * insert(int index,T value);
T delVal(int index);
int GetLength(){return length;}
bool isEmpty(){return length==0;}
bool isElem(T value,int &index)
{
for (int i=0;i<length;++i)
{
if(vec[i]==value)
{
index=i;
return true;
}
}
return false;
}
T & GetElem(int index)
{
return vec[index];
}
private:
int length;
int capicity;
T *vec;
};
template <typename T> LinearList<T>::LinearList()
{
capicity=100;
length=0;
vec=new T[capicity];
}
template <typename T> LinearList<T>::LinearList(int num)
{
if(num<0)
exit(OVERFLOW);
capicity=num;
length=0;
vec=new T[capicity];
}
template <typename T> T * LinearList<T>::insert(int index, T value)
{
if(index<0||index>length)
cout<<"overflow"<<endl;
if(length>=capicity)
{
T *newVec=new T[capicity*2];
for (int i=0;i<length;++i)
{
newVec[i]=vec[i];
}
delete [] vec;
vec=newVec;
capicity*=2;
}
T *beg=&vec[index];
for (T *end=&vec[length-1];end>=beg;--end)
{
*(end+1)=*end;
}
*beg=value;
++length;
return beg;
}
template <typename T> T LinearList<T>::delVal(int index)
{
if (index<0||index>length)
{
cout<<"overflow"<<endl;;
}
T *temp=&vec[index];
T ret=*temp;
for(T *end=&vec[length-1];temp<=end;++temp)
*temp=*(temp+1);
--length;
return ret;
}
#include <string>
using namespace std;
template <typename T> class LinearList{
public:
LinearList();
LinearList(int num);
T * insert(int index,T value);
T delVal(int index);
int GetLength(){return length;}
bool isEmpty(){return length==0;}
bool isElem(T value,int &index)
{
for (int i=0;i<length;++i)
{
if(vec[i]==value)
{
index=i;
return true;
}
}
return false;
}
T & GetElem(int index)
{
return vec[index];
}
private:
int length;
int capicity;
T *vec;
};
template <typename T> LinearList<T>::LinearList()
{
capicity=100;
length=0;
vec=new T[capicity];
}
template <typename T> LinearList<T>::LinearList(int num)
{
if(num<0)
exit(OVERFLOW);
capicity=num;
length=0;
vec=new T[capicity];
}
template <typename T> T * LinearList<T>::insert(int index, T value)
{
if(index<0||index>length)
cout<<"overflow"<<endl;
if(length>=capicity)
{
T *newVec=new T[capicity*2];
for (int i=0;i<length;++i)
{
newVec[i]=vec[i];
}
delete [] vec;
vec=newVec;
capicity*=2;
}
T *beg=&vec[index];
for (T *end=&vec[length-1];end>=beg;--end)
{
*(end+1)=*end;
}
*beg=value;
++length;
return beg;
}
template <typename T> T LinearList<T>::delVal(int index)
{
if (index<0||index>length)
{
cout<<"overflow"<<endl;;
}
T *temp=&vec[index];
T ret=*temp;
for(T *end=&vec[length-1];temp<=end;++temp)
*temp=*(temp+1);
--length;
return ret;
}
相关文章推荐
- 基于数组和基于链表线性表C++实现
- 利用c++模板实现求数组最大值
- C/C++ 第八周串和数组 (一)稀疏矩阵的三元组表示的实现及应用 项目4—(1)
- 基于数组的循环队列(C++模板实现)
- 二叉树的数组表示 C++实现(添加 按层遍历)
- C++模板数组实现有序数组的排列合并算法
- C++ 数据结构线性表-数组实现
- 基于数组的循环队列(C++模板实现)
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现
- 【C++数据结构学习笔记---线性表】用数组实现线性表
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- c/c++ 数据结构-线性表(链式表示&实现&单链表定义&实现)
- 有序数组的合并 c++模板实现
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- C++用数组实现的线性表
- C/C++ 第八周串和数组 (一)稀疏矩阵的三元组表示的实现及应用 项目4—(2)
- 【data structure】线性表简单模板c++实现
- C++获取数组的长度(用模板可以实现)
- c++ 模板学习笔记:函数模板实现数组通用排序和遍历打印(权哥)
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现