线性表 - 公式化描述实现线性表
List.h
/******************************************************************** purpose: 公式化描述实现线性表 author: xianyun1230 QQ: 836663997 e-mail: xianyun1230@163.com created: 2014/02/16 *********************************************************************/ #include <iostream> template<typename T> class List { public: List(int MaxListSize = 10); ~List(); bool empty() const { return _length == 0;} int length() const { return _length;} int search(const T &x) const; bool del(int k,T &val); bool insert(int k, const T& x); void show(); T operator [](int i){return element[i];} private: int _length; T *element; int MaxSize; }; template<typename T> List<T>::List(int MaxListSize) { MaxSize = MaxListSize; _length = 0; element = new T[MaxSize]; } template<typename T> List<T>::~List() { delete [] element; } template<typename T> int List<T>::search(const T &x) const { for (int i = 0; i < _length && element[i] != x; ++i) continue; if (i != _length) return i-1; else return -1; } template<typename T> bool List<T>::del(int k, T &val) { if (k < 0 || k >= _length) return false; int n = k; val = element[n]; while(n < _length - 1) { element[n] = element[n+1]; ++n; } --_length; return true; } template<typename T> bool List<T>::insert(int k, const T& x) { if (k < 0 || k > _length || _length == MaxSize) return false; int n = _length - 1; while (k <= n) { element[n + 1] = element[n]; --n; } element[k] = x; ++_length; return true; } template<typename T> void List<T>::show() { using namespace std; cout <<"共" <<_length <<"项:" <<endl; for (int i=0; i < _length; ++i) cout <<element[i] <<endl; }
main.cpp
#include "List.h"
int main()
{
List<int> link(12);
link.insert(0,21);
link.insert(0,12);
link.insert(2,34);
link.insert(1,12);
link.insert(5,13);
//没有第五项,不会插入
link.show();
int a;
link.del(2,a);
link.show();
std::cout <<a;
return 0;
}