数据表与搜索表的类定义 #include <iostream.h> #include <assert.h> const int defaultSize 100; template <class K,class E> class dataList; 川数据表类的前视定义,K为 关键码对应的类,E为其他属性对应的类 template <class K,class E> class dataNode 川数据表中结点类的定义 friend class dataList<K,E>; /声明其友元类为datalist 6
数据表与搜索表的类定义 #include <iostream.h> #include <assert.h> const int defaultSize = 100; template <class K, class E> class dataList; //数据表类的前视定义, K为 关键码对应的类,E为其他属性对应的类 template <class K, class E > class dataNode { //数据表中结点类的定义 friend class dataList<K, E>; //声明其友元类为dataList 6
public: dataNode (const Kx.const Ee) key(x),other(e) /构造函数 K getKey(const return key;} /读取关键码 void setKey (K x)key =x; /修改关键码 private: K key; /关键码域 E other; /其他域(视问题而定) }; 7
public: dataNode (const K x, const E e) : key(x), other(e) { } //构造函数 K getKey() const { return key; } //读取关键码 void setKey (K x) { key = x; } //修改关键码 private: K key; //关键码域 E other; //其他域(视问题而定) }; 7
template <class K,class E> class dataList 川数据表类定义 public: dataList (int sz defaultSize) ArraySize(sz),CurrentSize(0) Element new dataNode<K,E>sz]; assert (Element !=NULL); dataList(dataList<-K,E>&R);/复制构造函数 virtual~dataList(){delete[]Element;.}/∥析构函数 virtual int Length({return CurrentSize; 川求表的长度 virtual K getKey (int i)const /提取第i个(从l开始)元素的ky值 8
template <class K, class E > class dataList { //数据表类定义 public: dataList (int sz = defaultSize) : ArraySize(sz), CurrentSize(0) { Element = new dataNode<K, E>[sz]; assert (Element != NULL); } dataList (dataList<K, E>& R); //复制构造函数 virtual ~dataList() { delete []Element; } //析构函数 virtual int Length() { return CurrentSize; } //求表的长度 virtual K getKey (int i) const { //提取第 i个(从1开始)元素的key值 8
assert (i>0 &i<=CurrentSize); return Element[i-1].key; virtual void setKey (K x,int i) /修改第i个(从1开始)元素的ky值 assert (i>0&i<=CurrentSize); Element[i-1].key =x; virtual int SeqSearch (const K x)const; /搜索 virtual bool Insert (K x,E el); /插入 virtual bool Remove (K x,E&el); /删除 friend ostream&operator <<(ostream&out, const dataList<K,E>&OutList); /输出 9
assert (i > 0 & i <= CurrentSize); return Element[i-1].key; } virtual void setKey (K x, int i) { //修改第 i个(从1开始)元素的key值 assert (i > 0 & i <= CurrentSize); Element[i-1].key = x; } virtual int SeqSearch (const K x) const; //搜索 virtual bool Insert (K x , E e1); //插入 virtual bool Remove (K x, E& e1); //删除 friend ostream& operator << (ostream& out, const dataList<K, E>& OutList); //输出 9
friend istream&operator >(istream&in, dataList<K,E>&InList); /输入 protected; dataNode<K,E>*Element; /川数据表存储数组 int ArraySize,CurrentSize; /数组最大长度和当前长度 }; 10
friend istream& operator >> (istream& in, dataList<K, E>& InList); //输入 protected: dataNode<K, E> *Element; //数据表存储数组 int ArraySize, CurrentSize; //数组最大长度和当前长度 }; 10