顺序表的实现

// LinerList.cpp : 定义控制台应用程序的入口点。
//c++语言编写,
//实现线性表中的顺序存储结构,用动态申请的数组实现,注意释放内存
//实现表的构造、析构、插入、删除、显示操作
#include "stdafx.h" #include<iostream> using namespace std; template<class T> class LinerListSqu{ T*elem;//表首地址 int length;//表长 long maxsize;//表容量 public: LinerListSqu(int);//构造函数 ~LinerListSqu();//析构函数 bool insertElem(int k, const T&x);//在k个元素之后插入x bool deleteElem(int k, T&x);//删除第k个元素并将它返回至x中 void display(); }; template<class T> LinerListSqu<T>::LinerListSqu(int num){ elem = new T[num]; length = 0; maxsize = num; } template<class T> bool LinerListSqu<T>::insertElem(int k,const T&x){ if (maxsize == 0 || k<0 || k>length) return false; if (length >= maxsize){ elem = (T*)realloc(elem, maxsize + sizeof(T)*maxsize); maxsize *= 2; } for (int i = length-1+1 ; i > k; i--){ elem[i] = elem[i - 1]; } elem[k] = x; length++; return true; } template<class T> bool LinerListSqu<T>::deleteElem(int k, T&x){ if (length == 0 || k<1 || k>length) return false; for (int i = k -1; i < length - 1; i++) elem[i] = elem[i + 1]; length--; return true; } template<class T> void LinerListSqu<T>::display(){ int len = length; T *p = elem; while (len--) cout << *p++<<","; cout << endl; } template<class T> LinerListSqu<T>::~LinerListSqu(){ delete elem; } int _tmain(int argc, _TCHAR* argv[]) { LinerListSqu<int> L(5); for (int i = 1; i <= 5; i++) L.insertElem(i-1, i*2); L.display(); L.insertElem(3, 0); L.display(); int x; L.deleteElem(3, x); L.display(); cout << x; return 0; }
原文地址:https://www.cnblogs.com/StormWendy/p/8612901.html