顺序表C++模板实现
来源:互联网 发布:淘宝角色管理界面 编辑:程序博客网 时间:2024/06/05 09:08
#include<iostream>using namespace std;const int MAXSIZE = 20;template <class T>class SqList{private: T *data; int length;public: SqList(); //构造函数 ~SqList(); // 析构函数 void CreatList(T a[], int n); //创建顺序表 void Display(); //输出顺序表中所有元素 int GetLength(); //获取顺序表的长度 bool GetElem(int, T &elem); // 获取顺序表中的某个元素 bool ListInsert(int i, T elem); // 插入元素 bool ListDelete(int i, T &elem); //删除元素};template<class T>SqList<T>::SqList(){ cout<<"constract ok"<<endl; data = new T[MAXSIZE]; length = 0;}template<class T>SqList<T>::~SqList(){ cout<<"No"<<endl; delete [] data;}template<class T>void SqList<T>::CreatList(T a[], int n){ for(int i = 0; i < n; i++){ data[i] = a[i]; } length = n; cout<<"create SqList success!"<<endl;}//获取顺序表的长度template<class T>int SqList<T>::GetLength(){ return length;}//获取指定元素template<class T>bool SqList<T>::GetElem(int i, T &e){ if(length == 0 || i < 1 || i > length){ return false; } e = data[i-1]; return true;}//插入元素template<class T>bool SqList<T>::ListInsert(int i, T e){ if(length == MAXSIZE) //保证插入位置正确 return false; if(i < 1 || i > length+1) return false; if(i < length){ for(int k = length-1; k >= i-1; k--) //将插入位置之后的元素都向后移动一个位置 data[k+1] = data[k]; } data[i-1] = e; //将待插入的元素赋值给插入位置 length++; //将顺序表的长度增加一个 return true;}//删除元素template<class T>bool SqList<T>::ListDelete(int i, T &e){ if(length == 0) //保证删除位置正确 return false; if(i < 1 || i > length) return false; e = data[i-1]; //将要删除的元素保存给 e if(i < length){ for(int k = i; k < length; k++){ //将删除位置后面的元素都向前移动一个位置 data[k-1] = data[k]; } } length--; //将顺序表的长度删除一个 return true;}template<class T>void SqList<T>::Display(){ cout<<"display SqList:"; for(int i = 0; i < length; i++){ cout<<data[i]<<"\t"; } cout<<endl;}//堆中创建对象int main(){ SqList<int> *sqlist = new SqList<int>(); int arr[5] = {3, 4, 5, 6, 7}; sqlist->CreatList(arr, 5); sqlist->Display(); cout<<"get element length is :"<<sqlist->GetLength()<<endl; int a; sqlist->GetElem(2, a); cout<<"get element is : "<<a<<endl; sqlist->ListInsert(2, 100); sqlist->Display(); int b; sqlist->ListDelete(2, b); cout<<"delete element is : "<<b<<endl; sqlist->Display(); delete sqlist; return 0;}//栈中创建对象int main01(){ SqList<int>sqlist; int arr[5] = {3, 4, 5, 6, 7}; sqlist.CreatList(arr, 5); sqlist.Display(); cout<<"get element length is :"<<sqlist.GetLength()<<endl; int a; sqlist.GetElem(2, a); cout<<"get element is : "<<a<<endl; sqlist.ListInsert(2, 100); sqlist.Display(); int b; sqlist.ListDelete(2, b); cout<<"delete element is : "<<b<<endl; sqlist.Display(); // delete sqlist; return 0;}
ps: 顺序表的三种代码实现过程都写完了,其中有学习到了一点新的知识!不错!有问题欢迎指正哦 ^_^
阅读全文
0 0
- c++(模板类)实现顺序表
- 【C++】用模板实现顺序表
- 【C++】用模板实现顺序表Vector
- 模板实现顺序表
- 模板实现顺序表
- 模板实现顺序表
- 模板实现顺序表
- [数据结构] 顺序表的实现(c++/类模板)
- 【C++】模板类顺序表
- C++模板实现顺序表
- 顺序表 C++模板实现
- C++模板实现顺序表
- 模板实现动态顺序表
- 用模板实现顺序表
- 类模板实现顺序表
- 顺序表的模板实现
- 模板类实现顺序表
- 顺序表---模板类实现
- Docker学习笔记(2)--Docker常用命令
- 。。。。
- httpServletRequest
- Sublime Text3 + Golang 安装与部署
- CentOS安装 ping 命令
- 顺序表C++模板实现
- 《算法导论》学习之关于如何利用排序算法,从1亿个数中,选出最大(小)的100个数
- tf.add_to_collection()
- 【备忘】2017年深度学习项目实战之对抗生成网络视频课程
- C++中智能指针解析
- 微擎上传图片压缩质量
- HttpResponse
- java 作业
- IPSEC VPN概念介绍